Javascript MongoDB:如何在更新前对查询进行排序

Javascript MongoDB:如何在更新前对查询进行排序,javascript,node.js,mongodb,meteor,Javascript,Node.js,Mongodb,Meteor,我正在编写一个Meteor(Node.js)应用程序,它在后端使用MongoDB。在代码中的某个时刻,我需要更新集合中的特定文档。我需要使用Mongo的update()方法,但是我在传递适当的(复杂的)查询以缩小到特定文档时遇到了问题。我正在尝试更新的文档是: db.collection.find({market:'AAA'}).sort({creationDate:-1}).limit(1) 换句话说,collection中的一个文档,其市场为AAA,是最近创建的(creationDate是U

我正在编写一个Meteor(Node.js)应用程序,它在后端使用MongoDB。在代码中的某个时刻,我需要更新集合中的特定文档。我需要使用Mongo的update()方法,但是我在传递适当的(复杂的)查询以缩小到特定文档时遇到了问题。我正在尝试更新的文档是:

db.collection.find({market:'AAA'}).sort({creationDate:-1}).limit(1)

换句话说,
collection
中的一个文档,其市场为
AAA
,是最近创建的(creationDate是UNIX时间戳编号,例如
1408829429914
)。有多个文档的市场为
AAA
,因此我使用sort()和limit(1)查找最近创建的文档


Mongo似乎不接受排序参数作为更新过程之前查询的一部分。我可以做些什么来缩小范围并更新此文档?谢谢

您需要获取所需的文档,然后通过
\u id
进行更新。如果您的收藏名为
Markets
,则代码如下所示:

var market = Markets.findOne({market: 'AAA'}, {sort: {creationDate:-1}});
Markets.update(market._id, {$set: {fancy: true}});

值得一提的是,即使MongoDB支持您正在寻找的优化,meteor客户端代码也只能通过
\u id
进行更新。

不幸的是,唯一可能的方法是找到并运行更新,尽管有一个JIRA:但是findandmodify支持排序:@Sammaye findandmodify()在Mongo shell中工作完美!但是Meteor.js显然不支持它:
TypeError:Object[Object Object]没有方法“findAndModify”
。关于如何在javascript中调用此方法,有什么建议吗?我不是meteor专家,但似乎此线程包含以下示例: