比方說,我想更新整個文檔並覆蓋除_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),我將用它來研究該主題。儘管如此,任何幫助或暗示都非常感謝。