【发布时间】:2014-05-28 15:33:29
【问题描述】:
我正在对 ursor 的每个元素执行一个过程,我的集合有大约 600 万个文档,整个过程最多需要 10 个小时,因为我必须一次处理一个配置文件,而且对于每一个。
var cursor = dbMain.collection("profiles").find({});
var getNext = function(){
cursor.nextObject(processOne);
};
var processOne = function(err, profile){
if(err){
console.error("Error loading profile", err);
getNext();
} else if(profile == null){
// process is done, all profiles processed!!!
} else {
processProfile(profile)
.then(function(){
getNext();
})
.catch(function(errProfile){
console.error("Error processing profile", errProfile);
getNext();
});
}
};
var processProfile = function(profile){
// Complex profile processing and promise resolve when done
};
getNext();
问题:当我大约有 300,000 个配置文件时,我得到 null(这意味着光标已用尽),因此,只有前 300,000 个左右得到处理。 ¿ 任何人都知道如何处理它或我提前获得 null 的原因?
【问题讨论】:
-
我希望你的系统是 64 位的,对吧?
-
是的,没问题,没有硬件或安装问题。
标签: node.js mongodb database-cursor