2013-07-25 5 views
24

私はMongoDBの中で(すべてのドキュメント間で)配列フィールドからすべての要素を削除する適切な方法を探しています - これらは推奨され、等価であることが表示されます。Mongodb - 配列フィールドのすべての要素を削除する適切な方法は?

db.collection.update({}, { $pull : { 'myArray': {} }}, {multi:true}) 
(あるいは他のいくつかの方法はありますか?) $pullは、アレイ上の計算を行う必要がありますよう

または

db.collection.update({}, { $set : {'myArray': [] }} , {multi:true}) 

答えて

22

$setバリアントが速くなります。私は実際にあなたがあなたのクエリーで要素を削除していないので、それがうまくいくかどうかは確かではありません。

3

空の配列を保持する必要がありますか?そうでなければ、それは$unsetよりおそらく良いでしょう。

あなたは空の配列を維持する必要がある場合、私はあなたの$pull呼び出しが動作しませんと信じて - 私はそれは、あなたの配列からではないすべての要素を空の要素をすべて削除しますと思います

2

のMongoDBの公式文書によると:配列要素を一致させるために$を使用する場合

、$の解除は 一致するヌルを持つ要素ではなく、配列からマッチング要素 を削除するに置き換えられます。この動作は、配列のサイズと の要素の位置を一致させます。

$セットは適切な方法である必要があります。

関連する問題