3

Mongodb の更新では$push、配列に追加する修飾子が提供されます。私の問題は、これをdictで実行したいということです。

私の記録が最初にこのように見える場合:

{"collaborations":{'id1':{'role':'dev','scope':'dev'}}}

「コラボレーション」フィールドdictに別のアイテム(以下の「id2」)を追加して、次のようにします。

{"collaborations":{'id1':{'role':'dev','scope':'dev'},'id2':{'role':'qa','scope':'qa'}}}

私は試してい$pushます:

my_record.update({match_criteria},{$push,{"collaborations":{'id2':{'role':'qa','scope':'qa'}}}})

そしてまた$addToSet

my_record.update({match_criteria},{$,{"collaborations":{'id2':{'role':'qa','scope':'qa'}}}})

これらの両方で、mongodb は「非配列に$addToSet( ) 修飾子を適用できません」というエラーをスローします。$push

辞書タイプに対してこれを行うにはどうすればよいですか? 何か案は?

4

1 に答える 1

7

問題は$addToSet$push修飾子が配列で機能することです。

サブドキュメント (ここで必要なもの) を更新するには、$set修飾子とドット表記を使用してサブドキュメント ( field.subfield)にアクセスします。

my_record.update({
    match_criteria
}, {
    '$set': {
        'collaborators.id2': {
            // new document fields here
        }
    }
})
于 2012-08-15T11:07:54.720 に答える