在我的项目中,我必须多次更新MongoDB中的文档。我发现MongoDB支持使用insert_many
使用单个命令插入大量文档,但我不能一次使用update_many
更新,它们有不同的条件。我必须逐一更新它们。
使用insert_many
,我每秒可以插入超过7000个文档。在相同的环境中,每秒只能更新大约1500个文档。当一个人发出命令时,发送数千个命令似乎效率低下。
是否可以立即向MongoDB服务器发送多个更新命令?
感谢您解释@Blakes Seven,我已使用Bulk
重写了我的程序,并使用"无序"更新了文档。操作。我的测试环境有速度报告。
在我的测试环境中,test program
和MongoDB server
在同一台机器上运行,对于多个线程来说似乎并不完美。使用单个线程运行程序时MongoDB的CPU usage
,它介于150%和200%之间。 MongoDB完全并行执行了操作,似乎有一个客户端连接线程的限制。
无论如何,单个线程对我来说已经足够了,此外,更少的线程具有更高的效率。
关于客户端和服务器在不同计算机上运行的在线环境的另一份报告:
答案 0 :(得分:-1)
你可以用
做到这一点db.collection.findAndModify()
请查看文档: https://docs.mongodb.com/manual/reference/method/db.collection.findAndModify/