0

私は流星でアプリを書いていて、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 修飾子は、特定のフィールドのデータが既に存在する場合はそれらを置き換え、存在しない場合はセットに追加します。

置き換えたくないデータを上書きせずに、上記のようにドキュメントのデータを更新する方法はありますか?

ありがとう。

4

1 に答える 1

6

使用.

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

これらにより、特定のキーのみが変更されることが保証されます。

于 2013-07-04T08:57:30.450 に答える