MongoDB更新文档对象

时间:2015-05-24 22:55:33

标签: mongodb updates

user = users.findOne({
    "$or": [{
        'local.email': 'some@email.com'
    }, {
        'google.email': 'some@email.com'
    }, {
        'facebook.email': 'some@email.com'
    }] 
// do stuff with user object

所以我有user个对象。这很好,在我完成了我需要的属性之后,我希望现在更新此对象中的一些字段,我已经尝试了以下但没有它工作:

user.local.email = 'other@email.com';
users.update(user);

这不是更新文档的可行方法吗?

2 个答案:

答案 0 :(得分:1)

使用$set运算符更新文档,如下所示:

db.users.update(
   {
       "$or": [
           {'local.email': 'some@email.com'}, 
           {'google.email': 'some@email.com'}, 
           {'facebook.email': 'some@email.com'}
        ]
   },
   { 
       $set: {
          'local.email': 'other@email.com'
       }
   }
)

使用update方法,您不需要执行另一个查找要查找的文档,因为update()方法接受查询参数,该参数是更新的选择条件,相同的查询选择器与 find() 方法一样可用。详细了解Mongo文档中的更新方法 here

答案 1 :(得分:0)

这是更适合的解决方案。

user.local.email = 'other@email.com';
users.update({
    "$or": [{
        'local.email': 'some@email.com'
    }, {
        'google.email': 'some@email.com'
    }, {
        'facebook.email': 'some@email.com'
    }]
}, user);