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);
这不是更新文档的可行方法吗?
答案 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);