MongoDB可以一次发送多次更新命令吗?

时间:2015-07-13 08:58:38

标签: mongodb

在我的项目中,我必须多次更新MongoDB中的文档。我发现MongoDB支持使用insert_many使用单个命令插入大量文档,但我不能一次使用update_many更新,它们有不同的条件。我必须逐一更新它们。

使用insert_many,我每秒可以插入超过7000个文档。在相同的环境中,每秒只能更新大约1500个文档。当一个人发出命令时,发送数千个命令似乎效率低下。

是否可以立即向MongoDB服务器发送多个更新命令?

感谢您解释@Blakes Seven,我已使用Bulk重写了我的程序,并使用"无序"更新了文档。操作。我的测试环境有速度报告。

  • 1个主题:12655 doc / s cpu:150 - 200%
  • 2个主题:19005 doc / s cpu:200 - 300%
  • 3个主题:24433 doc / s cpu:300 - 400%
  • 4个主题:28957 doc / s cpu:400 - 500%
  • 5个主题:35586 doc / s cpu:500 - 600%
  • 6个主题:32942 doc / s cpu:600 +%

在我的测试环境中,test programMongoDB server在同一台机器上运行,对于多个线程来说似乎并不完美。使用单个线程运行程序时MongoDB的CPU usage,它介于150%和200%之间。 MongoDB完全并行执行了操作,似乎有一个客户端连接线程的限制。

无论如何,单个线程对我来说已经足够了,此外,更少的线程具有更高的效率。

关于客户端和服务器在不同计算机上运行的在线环境的另一份报告:

  • 1个主题:14719 doc / s
  • 2个主题:26837 doc / s
  • 3个主题:34908 doc / s
  • 4个主题:46151 doc / s
  • 5个主题:47842 doc / s
  • 6个主题:52522 doc / s

1 个答案:

答案 0 :(得分:-1)

你可以用

做到这一点
db.collection.findAndModify()

请查看文档: https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/