通过在 body、mongoose/mongodb 中提供文档来更新多个文档
Posted
技术标签:
【中文标题】通过在 body、mongoose/mongodb 中提供文档来更新多个文档【英文标题】:Update multiple documents by providing documents in body, mongoose/mongodb 【发布时间】:2014-12-28 15:03:01 【问题描述】:我需要通过在正文中提供多个文档来更新它们。我无法查询,必须提供。
例子:
var persons = [
id: 1, name'Joe', active: false,
id:2, name:'Jane', active: false)
];
此数据在正文中提供,我想将 active 属性设置为 false。
exports.setActivePropertyOnPersons = function(input,callback)
for(var i = 0;i<input.body.length;i++)
mongoose.model('person').findOne(id:input.body[i].id, function(err, person)
person.active = false;
person.save();
)
callback.send(200)
;
这段代码感觉不好。有没有更好的查询来做到这一点?我在文档中没有找到任何内容。
【问题讨论】:
【参考方案1】:尝试将更新命令与“$in”运算符一起使用:
var ids= [];
for (var i=0 i<input.body.length; ++i)
ids.push(input.body[i].id);
mongoose.model('person').update( id : "$in":ids, active:false , multi: true , function(err,docs) ... );
希望对你有帮助
【讨论】:
这是通过$in
选择多个文档的基本方法,但.update()
命令需要"multi" 参数才能实际更改比匹配的第一个文档更多。跨度>
你将如何处理活动变量中的不同值?以上是关于通过在 body、mongoose/mongodb 中提供文档来更新多个文档的主要内容,如果未能解决你的问题,请参考以下文章
$gte 和 $lte 在 Mongoose/MongoDB 中没有按预期工作
无法使用函数(req,res,next,id)mongoose(mongodb)中的动态id字段进行查询