【问题标题】:Update multiple documents by providing documents in body, mongoose/mongodb通过在 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)
};

这段代码感觉不好。有没有更好的查询来做到这一点?我在文档中没有找到任何内容。

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query


    【解决方案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" 参数才能实际更改比匹配的第一个文档更多。跨度>
    • 你将如何处理活动变量中的不同值?
    猜你喜欢
    • 1970-01-01
    • 2015-10-04
    • 2015-02-19
    • 2020-04-20
    • 2021-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-22
    相关资源
    最近更新 更多