我正在运行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键左右,没有大数据。
关于如何缩短这段时间的任何想法?
答案 0 :(得分:2)
根据您的评论,您的find
查询未使用会提示完整收集扫描的索引。
为您的收藏集添加一个可由find(query)
使用的索引;使用explain()
确认它已被使用。