猫鼬找到许多并更新所有

时间:2016-12-13 11:49:55

标签: javascript node.js mongodb mongoose

我使用的是Mongoose,并且需要根据某些计算更新许多文档。

如果我逐个查询,这很容易,但如果我说了50个项目,我不想逐个查询和更新

我正在做的是策划查询以撤回多个文档,以便我可以遍历所有文档并进行更改。

但是,您无法像使用findOne一样调用多个对象的保存。这是我第一次使用Mongoose,但在实体框架中,我可以编辑查询返回的结果并调用saveChanges()来更新已更改的每个项目

我想做这样的事情

item.find(query).exec(function(err, items) {
  for (i in items) {
     // change stuff
  }
  items.save(function (err) {
    // saved
  }
}

2 个答案:

答案 0 :(得分:2)

如果您使用Promise库,您可以这样做:

var Promise = require('bluebird');
var saveQuery=[];
item.find(query).exec(function(err, items) {
  for (i in items) {
     // change stuff
  }
saveQuery.push(item.save()); // Write your save query
}
    return Promise.all(saveQuery); // this will do your all save queries at once simultaneously.  

答案 1 :(得分:0)

如果您尝试对这些文档进行一些简单的更改,可能

update({_id:{$in:[a,b,c]}}, {$inc:{score:1}}, {multi:true}).exec()可以提供帮助。