使用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