我想通過使用Node本地mongodb模塊的流實現一個大規模的db.update()到我的Mongodb。MongoDb Node.js - 導致內存問題的大規模更新
我有什麼看起來是這樣的:
stream.on('data', function(data){
db.collection('my-db').update({_id:data.id},{$set:{notes:data.notes}},{upsert:true},
function(err,res){
if(err) throw err;
console.log(res);
})
})
我流中讀取一個CSV文件即超過150萬行,它在完成之前崩潰。
我明白,Async.whilst可以做到這一點,但我遇到了使用它的問題。 我曾嘗試:
stream.on('data', function(data)
var counter = 0;
async.whilst(
function(){counter < 10;},
function(cb){
var docs = [];
counter++;
docs.push({id:data.id,notes:data.notes});
}
db.collection('my-db').update(docs[0],{$set:docs[0]},{upsert:true},function(err,res){
if(err)throw err;
console.log(res);
counter--;
})
function(err){
//do something
}
)
})
然而,這似乎似乎並沒有扼殺我的數據庫的連接,並從崩潰拯救我的節點計劃。
任何幫助將不勝感激。
你能提供更多的細節和你正在遇到的崩潰,錯誤信息,內存統計等 – Sebastian
當然我得到一個內存不足的錯誤:'Node.js「致命錯誤:JS分配失敗 - 進程內存不足」 ' – MonsterWimp757
你有沒有考慮解析CSV和做小批量?我猜想,mongodb模塊正在將所有讀取的內容存儲到內存中以準備保存。 – Tony