Py学习  »  MongoDB

MongoDB-保存vs更新

Punit Goel • 4 年前 • 420 次点击  

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

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

我可以用任何一个 .save() .update() 更新文档。在update中,我只传递需要更新的字段,而在save中,我传递整个文档。我想知道在这种情况下使用update是否会比save(反之亦然)提供更好的性能,或者它在数据库级别没有任何区别,而且两者的性能都一样好?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/51170
 
420 次点击  
文章 [ 1 ]  |  最新文章 4 年前
Nachiappan Kumarappan
Reply   •   1 楼
Nachiappan Kumarappan    5 年前

在性能上没有任何显著的变化。原因如下

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

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

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

否则,使用save/update,这取决于客户端代码中哪个更优雅。