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
更新。
- 如何在node.js中正确实现读取stream的callback逻辑?
- 使用WebPack和Feathers进行节点debugging
- 从不同目录运行节点应用程序会使静态文件夹变得有趣
- 客户端模块工作stream程:(Browserify + npm + gulp)或(RequireJS + Bower + gulp)?
- 与http服务器,websocket和快递的体系结构
- 如何查找文件是否在Node.js的目录中?
- 在节点快递站点的Stormpathvalidation和授权后保留查询string
- 在nodejs中进行asynchronouscallback函数
- Firebase的云端function – 移除最老的孩子