mongo dbのオブジェクトの2つのコレクションを比較する必要があります。 私のシェルスクリプトは次のようになります。forEachはmongodb内のすべてのコレクションを反復しません
//Both arrays have 367 pretty big objects.
var list1 = db.collection1.find({..condition..}).toArray();
var list2 = db.collection2.find({..condition..}).toArray();
function compare(left, right){
var l = left.data.NP;
var r = right.data.NP;
if(JSON.stringify(l) === JSON.stringify(r)){
return 'Equal';
} else {
return 'Not equal';
}
}
list1.forEach(function(item, index){
print(index, compare(item,list2[index]));
})
私はRobomongoでこのスクリプトを実行します。 しかし、私は問題があります。その結果、367の8項目のみが印刷された。 Robomongoはエラーメッセージを表示しませんでした。私はforeachの内部
print(item);
を使用する場合 は、すべてがうまく働いたと、すべての367個のオブジェクトが印刷されました。また、オブジェクトの比較にDeep Diffライブラリを使用しようとしましたが、同じ結果が得られました - 367の12項目しか印刷されませんでした。
私はメモリ消費量の問題だと思っていますが、どうやって処理するのか分かりませんし、Robomongoがエラーを表示しないのはなぜですか?
カーソルのみを反復しようとしましたが、役に立たなかった。
なぜforeachがすべてのアイテムを反復できないのか、それを修正する方法はありますか?
[UPDATE 1] 私はRobomongoでちょうど開いたタブでスクリプトを実行する場合、それは102の要素を出力しますが、私は同じタブで再びそれを実行したときに、それが唯一の12を出力することを言及した調査のいくつかの時間後。
[UPDATE 2]私はエラーなしで、ネイティブMongoのシェルmongo.exeを使用してスクリプトを実行しようとプリント367個の要素100から得