这个应该可以帮到你
https://caolan.github.io/async/docs.html#each
如果不用aync库自己写的话也可以,大概是这个意思:
var data_array = [];
function processArray(array, index, callback) {
processItem(array[index], function(){
if(++index === array.length) {
callback();
return;
}
processArray(array, index, callback);
});
};
function processItem(item, callback) {
data_array.push(item['somefield']);
if (data_array.length > 100) {
insert_to_redis(data_array, callback);
data_array = [];
}
}
dataCollection.find({'date' : {'$gt': starttime}}).toArray(function(err, docs) {
processArray(docs, 0, function(){
if (data_array.length > 0) {
insert_to_redis(data_array);
}
});
});
【 在 saynothing 的大作中提到: 】
: 遍历mongodb某张数据库表(比如一亿数据),挨个访问记录,并作计算。 记录数每到
: 100的时候,将计算结果插入到redis。
: 这里有个问题:插入成功,再进行游标访问记录。 程序不好控制? Promise如何写?
: ...................
--
修改:sumeragi FROM 61.149.216.*
FROM 61.149.216.*