MongoDB:如何在更新之前sorting查询

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

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

换言之, collection中具有AAA市场且最近创build的文档(creationDate是UNIX时间戳编号,例如1408829429914 )。 有多个AAA市场的文档,所以我使用sort()和limit(1)来查找最近创build的文档。

在更新过程之前,Mongo的update()似乎不接受sorting参数作为查询的一部分。 我能做些什么来缩小这个文件并更新它? 谢谢!

您将需要获取所需的文档,然后通过_id进行更新。 如果您的collections被称为Markets ,则代码如下所示:

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

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