【发布时间】:2014-10-17 11:42:39
【问题描述】:
我正在编写一个在后端使用 MongoDB 的 Meteor (Node.js) 应用程序。在我的代码中的某个时刻,我需要更新集合中的特定 文档。我需要使用 Mongo 的 update() 方法,但在传递正确的(复杂的)查询以缩小到那个特定的文档时遇到了麻烦。我要更新的文档是:
db.collection.find({market: 'AAA'}).sort({creationDate:-1}).limit(1)
换句话说,collection 中的一个文档具有 AAA 的市场并且是最近创建的(creationDate 是一个 UNIX 时间戳编号,例如 1408829429914)。有多个文档的市场为AAA,所以我使用 sort() 和 limit(1) 来查找最近创建的文档。
Mongo 的update() 似乎不接受排序参数作为更新过程之前查询的一部分。我可以做些什么来缩小到这个文档并更新它?谢谢!
【问题讨论】:
-
不幸的是,唯一可能的方法是找到并运行更新,尽管有一个 JIRA:jira.mongodb.org/browse/SERVER-1599
-
不过 findandmodify 支持排序:docs.mongodb.org/manual/reference/method/…
-
@Sammaye findAndModify() 在 Mongo shell 中完美运行!但 Meteor.js 显然不支持它:
TypeError: Object [object Object] has no method 'findAndModify'。有关如何在 javascript 中调用此方法的任何建议? -
我不是流星专家,但似乎这个帖子有例子:github.com/meteor/meteor/issues/1070
标签: javascript node.js mongodb meteor