比方说,我想更新整个文档并覆盖除_id之外的所有字段。三种方法什么是最好的资源消耗方面:在MongoDB中更新整个文档(所有字段)的最快方法是什么?
1.将完整的文档更新参数,所以各领域传递
例子:
collection.update({_id: docId}, {$set:updateDoc});
2 。计算原始文件和updateDoc文件之间的增量文件
示例:
const originalDoc = collection.findOne(docId);
const deltaDoc = calculateDeltaFct(originalDoc, updateDoc); //get changed fields
collection.update({_id: docId}, {$set:deltaDoc});
3.使用Mongo 3.2. replaceOne function
例子:
collection.replaceOne({_id: docId}, {$set:updateDoc});
我的优点和每个方法的利弊的假设,但我想,以确保该选什么,以及为什么。我不确定如何精确测量,所以也许有人可以提供帮助。
背景:
我有一个指标集合,其中许多文件经常更新,但要更新的领域有很大的差异,所以很难写出对每个场更新方法。相反,我打算只是抛出所有数据并更新所有字段,因此我只保留一个更新方法以清除所有更新的代码。
更新:
在我的设置中,没有嵌入到文档结构的子文档。我的(dev)设置中也没有分片和复制。
此外,我还发现了一些方法(collection.explain),我将用它来研究该主题。尽管如此,任何帮助或暗示都非常感谢。