我使用的是Mongoose,并且需要根据某些计算更新许多文档。
如果我逐个查询,这很容易,但如果我说了50个项目,我不想逐个查询和更新
我正在做的是策划查询以撤回多个文档,以便我可以遍历所有文档并进行更改。
但是,您无法像使用findOne一样调用多个对象的保存。这是我第一次使用Mongoose,但在实体框架中,我可以编辑查询返回的结果并调用saveChanges()来更新已更改的每个项目
我想做这样的事情
item.find(query).exec(function(err, items) {
for (i in items) {
// change stuff
}
items.save(function (err) {
// saved
}
}
答案 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()
可以提供帮助。