我有一个包含超过 1000000 个文档的 mongoDB 集合,我想用专用信息一个一个地更新每个文档(每个文档都有一个来自其他集合的信息)。
目前我正在使用从集合中获取所有数据的游标,并通过 Node.js 的异步模块更新每个记录
获取所有文档:
inst.db.collection(association.collection, function(err, collection) {
collection.find({}, {}, function(err, cursor) {
cursor.toArray(function(err, items){
......
);
});
});
更新每个文档:
items.forEach(function(item) {
// *** do some stuff with item, add field etc.
tasks.push(function(nextTask) {
inst.db.collection(association.collection, function(err, collection) {
if (err) callback(err, null);
collection.save(item, nextTask);
});
});
});
并行调用“保存”任务
async.parallel(tasks, function(err, results) {
callback(err, results);
});
您会以更有效的方式进行此类操作吗?我的意思是如何避免加载游标的初始“查找”。现在有没有办法通过一个文档来做一个操作文档,知道所有文档都应该更新?
谢谢你的支持。