MongoDB - 保存与更新



我的集合中有大约 400 个字段(包括顶级字段和嵌入式字段),以下是写入查询的性质:

  1. 所有写入查询始终更新单个文档,平均更新 60 该文档中的字段。
  2. 集合中有索引字段,但没有写入查询更新索引字段。
  3. 写入查询量非常大。

我可以使用.save().update()来更新文档。在更新中,我只传递需要更新的字段,而在保存中,我传递整个文档。我想知道在这种情况下使用 update 是否会给我带来比保存更好的性能(反之亦然),还是在数据库级别没有任何区别并且两者的性能相同?

它不会对性能产生任何重大变化。原因如下

当您在mongodb中保存或更新文档时,您可能决定从另一个可以用C#,Java,JavaScript,PHP或其他语言编写的应用程序调用save或update。

在这种情况下,有一个进程间通信(或网络调用,如果你的mongo db在另一台机器上运行)。与此相比,通过更新有选择地替换文档并通过保存完全替换文档所花费的时间差异可以忽略不计。顺便说一下,如果没有索引,保存和更新两者的运行时复杂度可能为 O(n)。

对于具有 250 个字段的文档,文档的大小可能不是我们必须考虑的太大。如果更新文档的大小明显小于保存文档的大小,请使用 update。

否则使用保存/更新,具体取决于客户端代码中哪个更优雅。

最新更新