【问题标题】:Node.js MongoDB - How to update multiple documents with Mongoose?Node.js MongoDB - 如何使用 Mongoose 更新多个文档?
【发布时间】:2017-09-22 14:44:18
【问题描述】:

我有一个users 收藏,每个user 都有很多联系人。当user 删除他们的帐户时,我希望从与该用户连接的所有用户的联系人数组中删除该用户的 ID。我试过这个Model.Update 查询,但它不起作用。到目前为止,这是我的代码:

                User.update({'userId':{ $in: userIds }, 
                        $pullAll: {'contacts': [myId] },'multi': true 
                    },function(err, count) {
                        if(err){
                            console.log(err);
                        }else{
                            console.log(count);
                        } 
                    });

【问题讨论】:

  • 我认为userIds 是需要删除的用户的 id 数组,然后将它们从其他用户的 contacts 数组中删除,对吗?您还可以更新您的问题以显示User 模型的架构定义吗?
  • @chridam 是的,正确的。

标签: node.js mongodb mongoose mongoose-schema


【解决方案1】:

更新文档和multi 应该作为单独的参数传递:

User.update({
  userId : { $in : userIds }        // conditions
}, {
  $pullAll : { contacts : [myId] }  // document
}, {
  multi : true                      // options
}, function(err, count) {
  if (err) {
    console.log(err);
  } else {
    console.log(count);
  }
});

文档here

【讨论】:

    【解决方案2】:

    可以用多个条件更新多个文档

    Model.update({
        _id : { $in : ids}        // conditions
    }, {
        $set: {deletion_indicator: constants.N} // document
    }, {
        multi : true                      // options
    }, function(err, result) {
        if (err) {
            console.log(err);
        } else {
            console.log(result);
        }
    });
    

    【讨论】:

      猜你喜欢
      • 2017-01-06
      • 2018-04-18
      • 2011-12-04
      • 2016-10-15
      • 1970-01-01
      • 2017-06-06
      • 2015-10-04
      • 2015-02-19
      • 1970-01-01
      相关资源
      最近更新 更多