更新mongo文档的性能问题

时间:2018-12-30 14:08:21

标签: mongodb

我有一个mongo集合,具有大约4M条记录,该集合的2个文档字段中的日期是字符串形式的,我需要将它们更改为ISODate,因此请分配这个小脚本来做到这一点:

db.vendors.find().forEach(function(el){
    el.lastEdited = new Date(el.lastEdited);
    el.creationDate = new Date(el.creationDate)
    db.vendors.save(el)
})

但是这需要花很长时间...并且我向这些字段添加了索引,我不能以其他方式完成此操作吗?

1 个答案:

答案 0 :(得分:2)

当前,您对整个集合执行find,这可能需要一段时间,而且对于每个save调用,它也必须进行从客户端(外壳)到服务器的网络往返。
编辑:删除了建议使用$ match并分批执行此操作,因为实际上{@ {1}}会替换每次运行中的集合,如@Stennie的注释中所述。

(不用说,首先要在测试环境中在样本数据集中对其进行测试。由于我不知道您的数据格式,因此我尚未测试new Date()的行为)

$out