bulk.find.update()和update.collection(multi=true)在Mongo中有什么区别?

7

我是mongodb的新手,想在我的拥有数百万条记录的项目中实现mongodb。想知道在更新时应该选择什么 -bulk.find.update()还是update.collection并设置multi = true以获得更好的性能。

1个回答

4
据我所知,Bulk 提供的最大优势如下:
  1. 批量操作仅向 MongoDB 发送一个请求以处理所有请求。其他操作则会对每个文档发送一个请求,或者仅针对一种操作类型(如 insertupdateupdateOneupsert 中的 update 操作和 remove)发送请求。

  2. 批量操作可以在代码页的不同行上处理许多不同的情况。

  3. 批量操作可以异步工作,而其他操作则不能。

但是今天有些操作是基于 bulk 进行的,例如 insertMany

如果考虑到以上优点,update() 必须显示与 bulk.find.update() 操作相同的性能结果。

因为 update() 只能发送一个查询对象到 MongoDB。而 multi: true 只是一个参数,指定所有匹配的文档都必须更新。这意味着它只在网络上发出一个请求,就像 Bulk 操作一样。

因此,它们都只向 MongoDB 发送一个请求,MongoDB 评估查询子句以查找将要更新的文档,然后更新它们!

我曾试图在 MongoDB 官方网站上寻找这个问题的答案,但没有找到。

因此,@AsyaKamsky 的解释将是很好的!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接