我正在运行Mongo 2.6.3版本,要更新约900个记录,有时甚至高达5000个记录。以前我是通过循环来处理的,在处理900个记录时,upsert操作需要1分钟才能完成。
现在我正在使用initializeUnorderedBulkOp API,但处理900个记录需要大约40秒钟,速度非常慢。为什么会这样?
我的代码基本上是这样的:
现在我正在使用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) {
这是使用node驱动程序。这些调用的网络面板截图http://cl.ly/image/0L2a0o0w1I1b
当数据较小时,所需时间较短,因此这绝对是一个记录数量的问题。最后,我的对象不是很大,可能只有9个键左右,没有大数据。
如何缩短这个时间?有什么想法吗?
query
可以使用索引吗?如果不能,请确保它可以。 - JohnnyHK