1

このドキュメントをコレクションに持っています

{
   _id: 1,
   name: 'xpto',
   arr: [1, 2, 3]
},
{
  _id: 2,
  name: 'xyz'
}

update {multi: 1} で addToSet 番号 4 を arr にしたいのですが、「$addToSet 修飾子を非配列に適用できません」というエラーが表示されました。2 番目のドキュメントに arr フィールドがないために発生することはわかっています。

配列がすべてのドキュメントにない場合、更新コマンドで $push および/または $addtoset を使用して配列を更新することは可能ですか?

私は検索でそれを行い、cursor.arrを探し、存在しない場合は配列を作成しました。

別の方法を知っていますか?

4

1 に答える 1

1

最初のドキュメントの配列を更新する必要がある場合は、次のように $push 演算子を使用できます。

db.docs.update({_id:1},{$push:{arr:4}});

両方のドキュメントを更新する必要がある場合は、$push も使用できますが、最初のパラメーターに空の値を指定します。

db.docs.update({}, {$push:{arr:4}});

結果は次のようになります: *{"_id":1, "arr":[1,2,3,4], "name":"xpto"} {"_id":2, "arr":[4], "名前":"xyz"}*

于 2013-02-15T19:03:35.697 に答える