MongoDB更新文档对象


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);

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

使用 $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() 方法接受查询参数,该参数是更新的选择标准,与 find() 方法中相同的查询选择器是可用的。在Mongo文档中阅读更多关于更新方法的信息

这是更合适的解决方案。

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);

相关内容

  • 没有找到相关文章

最新更新