使用mongodb shell,我試圖向大集合中的每個文檔添加一個新屬性。集合(Listing)有一個名爲Address的現有屬性。我只是試圖添加一個名爲LowerCaseAddress的新屬性,它可以用於搜索,以便我不需要使用區分大小寫的正則表達式來進行地址匹配,這很慢。將新屬性添加到大集合中的每個文檔
這裏是我試過的外殼使用的腳本:
for(var c = db.Listing.find(); c.hasNext();) {
var listing = c.next();
db.Listing.update({ LowerCaseAddress: listing.Address.toLowerCase() });
}
它跑了〜6小時,然後我的電腦死機了。是否有更好的方式爲大集合中的每個文檔添加新屬性(大約400萬條記錄)?
它看起來就像你在更新缺少一些參數 - 你沒有一個標準,所以它可能試圖更新每個記錄循環的每次迭代。 (如果你沒有在更新中設置標準,我實際上並不確定mongo是如何表現的) – 2011-05-31 13:39:27
javascript在這裏不起作用。看看Sid Burn的回答。此外,如果您必須更新大量文檔,則可能需要批量執行以避免鎖定並在出現故障時獲取進度檢查點。 – 2011-06-01 17:23:25