我看了很久,沒有找到答案。 Node.JS的MongoDB驅動程序文檔說,你可以使用插入(文檔)進行批量插入,這很好,並且效果很好。如何在MongoDB中批量保存對象數組?
我現在有超過4,000,000個項目的集合,我需要爲它們全部添加一個新字段。通常mongodb每100ms只能寫1個事務,這意味着我會等待幾天來更新所有這些項目。我如何做一個「批量保存/更新」來一次更新它們? update()和save()似乎只適用於單個對象。
僞代碼:
var stuffToSave = [];
db.collection('blah').find({}, function(err, stuff) {
stuff.toArray().forEach(function(item)) {
item.newField = someComplexCalculationInvolvingALookup();
stuffToSave.push(item);
}
}
db.saveButNotSuperSlow(stuffToSave);
當然,我需要提上做一些像萬某些限制,一次不嘗試做所有4個萬人一次,但我想你明白了吧。
很多方法。分享一些代碼,甚至不好。最近版本的驅動程序支持更新和其他操作的批量操作。你的「統計數據」也與你自己的實施有關。不是一個在任何地方都一致的「硬」數字。 –
在第一部分中,您將討論插入。在第二部分中,你建議你需要做一個更新,這是哪一個?插入=新文檔,更新=更改現有文檔 –
我只是指出我想要在插入中提供的save()api中提供的相同功能。我會用一些僞代碼進行更新。 – user3690202