使用mongoose更新mongodb中一个对象的子数组中的所有值

时间:2017-07-31 12:38:10

标签: arrays node.js mongoose

user = { 'userid':'111', 'mail':[{ 'time':22222, 'info':'this is a info1', 'read':false, },{ 'time':33333, 'info':'this is a info2', 'read':false, }] }

然后,我想将一个用户的读取标志更改为true,我该怎么办呢?

2 个答案:

答案 0 :(得分:0)

这是一个简单的例子:我的模型是用户!!我的网址是数据库的路径

    var newUser = new User();
  newUser.name = request.body.name;
  newUser.email = request.body.email;  
  newUser.pass = request.body.pass;
  newUser.position = request.body.pos;
  newUser.phone = request.body.phone;
mongoose.connection.openUri(url);


  var myquery = { _id : request.params._id };

    console.log("updating...")
    User.findByIdAndUpdate(myquery,{$set: newUser},{new: true},function(err, result) {
      if(err)
      {
       throw err;
      }
      response.json({code: 0 , result});

}); 

答案 1 :(得分:-1)

这是我的回答:

        User.update({
            'userid':userid,
            'mails':{
                '$elemMatch':{
                    'read':false
                }
            }
        },{
            '$set':{
                'mail.$.read':false,
                'newmail':0,
            }
        }, { multi: true }, function (err, data) {
            if(err > 0){
                console.log('ReadMail err', err);
            }
        });