我需要将mongodb的大数据集转换为CSV。为此,我决定使用async.queue
并发级别=核心。示例代码看起来像
var q = async.queue(function (task, cb) {
collection.find(query).skip(task.skip).limit(task.limit)
.toArray(function (err, docs) {
// convert that data to CSV and push them in a Array
})
}, cores);
var offset = 0;
var limit = count / cores;
for (; cores >= 0; cores--) {
q.push({skip: offset, limit: limit});
offset += limit
}
// return the result after everything is done
q.drain = function () {
callback(inMemoryCsv.join())
};
但是mongo docs说mongodb
中跳过非常昂贵。那么在这种情况下我能做些什么呢?
这是一个Rest端点,用户正在请求下载CSV。基本上一切都是实时的。
我是以正确的方式做到这一点......?任何替代方法..?