0

Mongo コレクションに次のようなドキュメントがあります。

{
  _id: [uuid]
  prop: 
    some: "text",
    subprop: ['foo', 'bar']
}

可能であれば、レコード全体を取り出して修正し、元に戻す必要は避けたいと思います。保存されているインデックスがわからない場合、'bar'から削除するにはどの更新を実行できますか?doc.prop.subprop

ありがとう :)

4

1 に答える 1

2

これは、フィールドから特定の値を取得できる $pull 演算子を使用して実行できるはずです。ドット表記を使用して subprop フィールドを取得できます。

db.foo.update( { _id : [uuid] }, { $pull : { "prop.subprop" : "bar" } } );

コレクション内の複数のドキュメントに対して更新を実行する場合は、クエリで次の構文を使用して multi : true を設定する必要があります。

db.foo.update( { _id : [uuid] }, { $pull : { "prop.subprop" : "bar" } }, { multi : true } ); 

これは、コレクション内の { _id : [uuid] } に一致するすべてのドキュメントに対して更新クエリが実行されることを意味します。

于 2012-12-18T16:09:20.090 に答える