1

私の質問への回答に非常に近いStackOverflow Questionを見つけましたが、そこにはありません。

この元の質問 (配列内にあるドキュメントの変更) を取り上げますが、特定の変更を加えたいとは考えていません。代わりに、変更したい変更の辞書があります。次に例を示します。

元の書類

{
    _id: something,
    recipients: [{id:1, name:"Andrey", isread:false}, {id:2, name:"John", isread:false}]
}

変更予定

{
    isread: true,
    fullname: 'jonathan'
}

この変更辞書を John (id:2) に適用するにはどうすればよいですか? 関連する場合は、MongoDB-Node.JS ドライバーを使用してい ます ありがとう

4

1 に答える 1

3

$ 参照した質問と同じように、位置演算子を使用する必要がありますが、updateこの場合は次のようになります。

collection.update({_id:something, 'recipients.id': 2}, {$set: {'recipients.$': {
    isread: true,
    fullname: 'jonathan'
}}}, function (err) {...

編集

配列要素オブジェクト全体を置き換えないようにするには、次のようにする必要があります。

collection.update({_id:something, 'recipients.id': 2}, {$set: {
    'recipients.$.isread': true,
    'recipients.$.fullname': 'jonathan'
}}, function (err) {...
于 2012-08-08T19:05:24.753 に答える