mongoosefind很多,并全部更新

我正在使用Mongoose,并且需要根据一些计算来更新许多文档。

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

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

但是,不能调用保存多个对象,就像使用findOne一样。 这是我第一次使用Mongoose,但是在Entity Framework中,我可以编辑查询返回的结果,并调用saveChanges()来更新每个已更改的项目

我想要做这样的事情

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

       

网上收集的解决方案 "mongoosefind很多,并全部更新"

如果你使用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. 

如果您正在尝试对这些文档进行一些简单的更改,也许

update({_id:{$in:[a,b,c]}}, {$inc:{score:1}}, {multi:true}).exec()