由于我想用500k条目更新整个文档集合(有些可能存在,有些不存在),我遍历文档(它们是来自CSV的普通JS对象),并通过{{ 1}}方法。
这是一个简化的JS代码:
findOneAndUpdate
第一次插入的速度很快(每秒超过500次),但是当达到25%时,它开始确实很慢(500次输入10秒或更长时间)。我认为接近80%会比较慢(冻结?)。
是否有更好的方法来做这种事情?我该如何加快速度?
我的意思是,它只有50万个整体(具有很多属性,但是我认为这并不重要)。
答案 0 :(得分:2)
有2种方法可以使我更有效地做到这一点。
确保您在REF上有索引。
创建批处理更新,而不是等待1 bulkWrite
答案 1 :(得分:2)
发表评论作为答案
您有an index on REF
吗?否则,数据库将不得不扫描整个集合以找出是否存在具有相同REF
的模型。
答案 2 :(得分:1)
我曾经为数据库模型迁移做过这类操作,但发现produce
在这里确实有所作为。我将执行以下操作:
.bulkWrite()
在您的情况下,在每次迭代中,您都在等待来查询和更新文档。批量写入旨在避免这种情况,并让DB在后台进行艰苦的工作。
如果您想进一步了解该主题,请查看MongoDB docs,在这里它告诉您有关批量大小和操作顺序的信息。
希望这可以帮助您解决问题