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