我需要比较 mongo db 中的两个对象集合。我的 shell 脚本如下所示:
//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]));
})
Run Code Online (Sandbox Code Playgroud)
我在 Robomongo 中执行这个脚本。但我有一个问题。结果,367 项中仅打印了 8 项。Robomongo 没有显示任何错误消息。当我使用
print(item);
Run Code Online (Sandbox Code Playgroud)
在 foreach 内部,一切正常,所有 367 个对象都被打印出来。我还尝试使用 Deep Diff 库进行对象比较,但得到了相同的结果 - 仅打印了 367 个项目中的 12 个项目。
我认为问题出在内存消耗上,但我不知道如何处理它,也不知道为什么 Robomongo 不打印任何错误。
我尝试仅迭代游标,但没有帮助。
为什么 foreach 不能迭代所有项目以及如何修复它?
[更新 …