2016-04-25 10 views
2

これはnoobieの質問かもしれませんが、他のコレクションにあるドキュメントと一致するすべてのドキュメントをmongodbコレクションから削除するにはどうすればよいですか?例えば、モンゴシェルを使用して、我々は次のことを行うことができます:他のコレクションで一致する1つのmongoコレクションからドキュメントを削除する

db.getCollection('coll1').find({}).forEach(function(doc) { 
    db.getCollection('coll2').remove({ name: doc.name, value: doc.value }); 
    }) 

答えて

0

私は削除して配列に$で名前やIDの配列を渡すことにより削除と$でを使用してそれを行うことを提案します。

db.getCollection('coll1').find({}).forEach(function(doc) { 
 
    
 
    // create idsArray from the doc data and pass same in $in 
 
    
 
    db.getCollection('coll2').remove({ id: { $in: idsArray }); 
 
    })

私はそれを助けるホップ。 :)

+0

私はこれが役立つとは思っていません、@ラッキーです。後続のremove呼び出しは、削除したい2つのフィールドであるdoc.nameとdoc.valueの検索一致を実行します。私は自分のフォローアップの提案を持っているので、削除が速くなる。 'coll2'でインデックスを作成すると、removeでの検索操作が高速になります。 'db.getCollection( 'coll2')。createIndex({name:1});' –

関連する問題