这个问题在这里已有答案:
我的集合中有大约400个字段(包括顶层和嵌入式字段),以下是写入查询的本质:
我可以使用.save()
或.update()
来更新文档。在更新中,我只传递需要更新的字段,而在保存中,我传递整个文档。我想知道在这种情况下使用更新是否会给我提供比保存更好的性能(反之亦然),或者它在数据库级别没有任何差别,并且两者表现同样出色?
它没有对性能做出任何重大改变。原因如下
当您在mongodb中保存或更新文档时,您可能决定从另一个可以用C#,Java,JavaScript,PHP或其他语言编写的应用程序中调用保存或更新。
在这种情况下,有一个进程间通信(如果mongo db在另一台机器上运行,则进行网络调用)。与此相比,通过更新选择性地替换文档并通过保存完全替换文档所花费的时间差异可以忽略不计。顺便说一下,如果没有索引,保存和更新两者可能会有O(n)的运行时复杂性。
对于包含250个字段的文档,文档的大小可能不会太大,我们必须考虑。如果更新文档的大小明显小于保存文档的大小,请使用更新。
否则使用保存/更新取决于客户端代码中哪个更优雅。