多字段MongoDB更新不起作用

时间:2014-02-28 01:43:56

标签: mongodb

我正在尝试一次更新几个字段(位置和电子邮件)但不起作用:

db.collection('userlist').update(
       { username:req.body.username},
       {
          location:req.body.location,
          email:req.body.email
       },
       { upsert: false }, 
       function(err, success) {
          if(err)
            console.log(err);
          else
            console.log(success);
       }
    );

出于某种原因,如果我只在其中包含一个字段,那么它可以正常工作

db.collection('userlist').update(
   { username:req.body.username},
   {
      location:req.body.location
   },
   { upsert: false }, 
   function(err, success) {
      if(err)
        console.log(err);
      else
        console.log(success);
   }
);

出了什么问题?

1 个答案:

答案 0 :(得分:0)

如果您只想更新现有文档的某些字段,则需要使用$set,否则匹配的文档将替换为您的更新对象(_id除外)。

所以做这样的事情:

db.collection('userlist').update(
   { username:req.body.username},
   { $set: {
      location:req.body.location,
      email:req.body.email
   }},
   { upsert: false }, 
   function(err, success) {
      if(err)
        console.log(err);
      else
        console.log(success);
   }
);