我正在meteor中编写应用程序并尝试熟悉mongodb,我正在尝试使用以下架构更新用户。
user = {
... SOME DATA....,
"profile": {
"firstName": "HELLO",
"lastName": "MIKE",
"phoneNumber": "0432456524",
"userRole": "General Practitioner",
"practice": {
"name": "Hello koramaiku",
"address": "222 Hello St Helloville",
"state": "NSW",
"postcode": "2000"
},
"AHPRANumber": "4586546545",
"providerNumber": "4565498751321"
}, ..... SOME MORE DATA
}
我有一个设置表单,它将修改用户的配置文件对象中的一些细节。 我有一个表单,允许您编辑配置文件对象中的firstName,lastName和phoneNumber,而不替换一些现有值。
var userData = {
firstName: 'Hello',
lastName: 'Kora',
phoneNumber: '0422222222'
};
Meteor.users.update({'_id': Meteor.userId() }, {$set : userData}, function(error){
........
});
但是,如果我执行更新,它会用新值覆盖整个配置文件对象,而不是仅替换我需要的值。据我所知,$ set修饰符将替换某个字段中的数据(如果它们已经存在),如果它们不存在则添加到set。
有没有办法像上面那样更新文档的数据,而不会覆盖我不想替换的数据?
感谢。
答案 0 :(得分:6)
使用.
userData = {
"profile.firstName": 'Hello',
"profile.lastName": 'Kora',
"profile.phoneNumber": '0422222222'
};
这些将确保只更改那些特定的键。