更新文档中的数据而不替换值

时间:2013-07-04 04:02:46

标签: mongodb meteor

我正在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。

有没有办法像上面那样更新文档的数据,而不会覆盖我不想替换的数据?

感谢。

1 个答案:

答案 0 :(得分:6)

使用.

userData = {
                "profile.firstName": 'Hello',
                "profile.lastName": 'Kora',
                "profile.phoneNumber": '0422222222'
           };

这些将确保只更改那些特定的键。