私は2つの大きなコレクションを使用しています(小さなデータはコレクションAにあり、大きなバイナリデータはコレクションBにあります)。彼らはすべての今、私のようなものに基づいて、両方のコレクションからすべてを削除したい、同じkey
ありますコレクションAからの結果に基づいてコレクションBから削除
db.A.remove({ field1: 10 })
フィールド1だけのコレクションAに存在しているが、私は、収集B. soから同じkey
との結果を削除する必要があります私はdb.A.find()
でカーソルを作成し、db.B
のすべてを1つずつ削除します。それは動作しますが、50k +アイテムのような大きなコレクションでは非常に遅いので、クエリに基づいて項目を削除するだけで100k操作が好きです。より良い方法がありますか?
var _ids = [];
A.find({ field1: 10 }).stream().on('data', function(data) {
_ids.push(data._id);
}).once('close', function() {
A.remove({ field1: 10 });
B.remove({ _id: { $in: _ids } });
});
: はまた、$はIDの数には限界があるので、私はいくつかの素晴らしい解決策を探してる...オペレータとマングースで$で
、私のようなものとなった可能性がありそれはちょっとうまくいくが、私は演算子で$でクエリの制限がヒットするのではないかと恐れている。
コードの例はありますか? –
@MoiSyme私はMongooseを思い付くことができるものを追加しました –