一邊唸叨蒙戈保存和更新,我得到了一點混淆-as每篇文章MongoDB的保存和更新
MongoDB的更新()和save()方法用於更新文檔到一個集合。 update()方法更新現有文檔中的值,而save()方法用save()方法中傳遞的文檔替換現有文檔。
請讓我知道兩者的區別。
一邊唸叨蒙戈保存和更新,我得到了一點混淆-as每篇文章MongoDB的保存和更新
MongoDB的更新()和save()方法用於更新文檔到一個集合。 update()方法更新現有文檔中的值,而save()方法用save()方法中傳遞的文檔替換現有文檔。
請讓我知道兩者的區別。
update
更改您的查找參數找到的現有文檔,並且在沒有此文檔時不會執行任何操作(除非您使用upsert
選項)。
save
不允許任何查找參數。它檢查是否存在與您保存的文檔相同的文檔_id
。當它存在時,它將取代它。當不存在這樣的文檔時,它將該文檔作爲新文檔插入。當插入的文檔沒有_id
字段時,它會在插入之前生成一個新創建的ObjectId。
collection.save(document);
是基本上的縮寫:
if (document._id == undefined) {
document._id = new ObjectId();
}
collection.update({ "_id":document._id }, document, { upsert:true });
從文檔:
的保存()方法使用任一插入或更新命令,該命令 使用默認的寫關注。要指定不同的寫入關注點, 在選項參數中包含寫入關注點。
如果文檔不包含_id字段,則save()方法 將調用insert()方法。
如果文檔包含一個_id字段,則save()方法爲 等效於updid選項設置爲true並且 查詢謂詞在_id字段上。
如果UPSERT沒有指定它
修改集合中的現有文檔或文件。方法 可以修改現有文檔或文檔的特定字段,或者根據更新 參數完全替換現有文檔。
如果upsert爲true且沒有文檔與查詢條件匹配,則update() 將插入單個文檔。
所以他們很相似,都可以更新和插入文檔。區別在於保存只能更新一個文檔。
一個明顯的區別是更新方法可以接受多個參數,如**。更新({查詢},{更新},{選項})** **而**'保存**只接受一個參數。 – chridam