Mongodb - 返回所有更新文档的_id数组

时间:2016-03-06 09:32:27

标签: mongodb

我需要更新一个集合中的一些文档,并将更新文档的_id数组发送到另一个集合。

由于update()会返回更新项而不是其ID ,我已经拿出以下内容来获取数组:

var docsUpdated = [];
var cursor = myCollection.find(<myQuery>);
cursor.forEach(function(doc) {
  myCollection.update({_id : doc._id}, <myUpdate>, function(error, response){
    docsUpdated.push(doc._id);
  });
});

或者我能做到:

var docsUpdated = myCollection.distinct("_id", <myQuery>);
myCollection.update(<myQuery>, <myUpdate>, {multi : true});

我猜第二个版本会更快,因为它只调用数据库两次。但两者看起来都非常低效 - 有没有其他方法可以在没有多个数据库调用的情况下执行此操作?还是我过于复杂的事情?

1 个答案:

答案 0 :(得分:0)

我认为你需要游标操作符“.aggregate()”

db.orders.aggregate([
                 { $group: { _id: "$_id"} }
               ])

这些行中的某些内容返回集合中所有id的结果