MongoDB批量更新很慢

时间:2014-12-02 15:58:26

标签: javascript mongodb bulkinsert node-mongodb-native

我正在运行Mongo 2.6.3我正在更新大约900条记录,有时甚至多达5000条记录。我之前在循环中有这个,并且对于900个记录,upserts花了大约1分钟来完成。

现在,我正在使用initializeUnorderedBulkOp API,900条记录大约需要40秒。为什么这么慢?

我基本上有

var batch = collection.initializeUnorderedBulkOp({useLegacyOps: true});
// for loop
batch.find(query).upsert().updateOne({my object});
batch.execute({w:0},function(err, result) {

这是使用节点驱动程序。这些电话http://cl.ly/image/0L2a0o0w1I1b

的网络面板的屏幕截图

当数据较小时,花费的时间较少,因此肯定存在许多记录问题。最后,我的对象并不大,它们可能是9键左右,没有大数据。

关于如何缩短这段时间的任何想法?

1 个答案:

答案 0 :(得分:2)

根据您的评论,您的find查询未使用会提示完整收集扫描的索引。

为您的收藏集添加一个可由find(query)使用的索引;使用explain()确认它已被使用。