mongo db의 두 객체 콜렉션을 비교해야합니다. 내 쉘 스크립트는 다음과 같습니다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는 오류 메시지를 표시하지 않았습니다. 제가
내부의 foreachprint(item);
을 사용하는 경우는 모두 잘 작동하고 모든 367 개체 인쇄 하였다. 또한 객체 비교를 위해 Deep Diff 라이브러리를 사용하려했지만 동일한 결과를 얻었습니다. 367 개에서 12 개 항목 만 인쇄되었습니다.
메모리 소비 문제는 생각하지만 Robomongo가 오류를 인쇄하지 않는 이유는 무엇인지 모릅니다.
커서 만 반복하려고했지만 도움이되지 않았습니다.
foreach가 모든 항목을 반복하지 못하고이를 고칠 수있는 이유는 무엇입니까?
[UPDATE 1] 난 Robomongo 단지 개방 탭에서 스크립트를 실행하는 경우는 102 개 소자를 인쇄하지만 동일한 탭 다시 실행할 때만 12 인쇄 언급 조사 몇 시간 후.
[업데이트 2] 나는 오류없이 네이티브 몽고 쉘 mongo.exe를 사용하여 스크립트를 실행하려고 및 인쇄 (367 개) 요소에서 100을 가지고