【发布时间】:2017-02-11 18:55:35
【问题描述】:
我需要比较来自 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]));
})
我在 Robomongo 中执行这个脚本。 但我有一个问题。结果,仅打印了 367 中的 8 个项目。 Robomongo 没有显示任何错误消息。 当我使用
print(item);
在 foreach 中,一切正常,打印了所有 367 个对象。我还尝试使用 Deep Diff 库进行对象比较,但得到了相同的结果 - 仅打印了 367 中的 12 个项目。
我认为是内存消耗的问题,但我不知道如何处理,以及为什么 Robomongo 不打印任何错误。
我尝试只迭代游标,但没有帮助。
为什么 foreach 不能迭代所有项目以及如何修复它?
[更新 1] 经过一段时间的调查,我提到如果我在 Robomongo 刚刚打开的选项卡中运行脚本,它会打印 102 个元素,但是当我在同一个选项卡中再次运行它时,它只会打印 12 个。
[更新 2] 我尝试使用本机 mongo shell mongo.exe 运行脚本,并从打印的 367 个元素中得到 100 个,没有错误
【问题讨论】:
标签: javascript mongodb robo3t