3
我正在运行Mongo 2.6.3我正在更新大约900条记录,有时候最多有5000条记录。之前我有过这样的循环,对于900个记录,这些高音耗时大约需要1分钟才能完成。MongoDB批量更新很慢
现在,我正在使用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个键左右,没有大数据。
关于如何缩短这个时间的任何想法?
'query'可以使用索引吗?如果没有,请确保它可以。 – JohnnyHK 2014-12-02 16:09:39
我们可以有更多的信息吗?什么是查询?它是否被索引?什么是更新?集合上存在哪些索引? – wdberkeley 2014-12-02 19:10:42
呃,索引是答案。你应该离开这个,所以我可以标记它。我很笨,没有意识到它。 – 2014-12-02 22:44:33