2012-11-29 51 views
1

我的問題與標題中一樣清楚。當請求到我的服務中更新mongoDb中的相關記錄時,我們使用「save」方法。確定mongodb保存方法是否確實更新記錄

但是,我想了解save方法是否真的更新記錄。

換句話說,我想知道要保存的內容是否與mongoDb中的現有內容相同。因此,即使執行保存方法沒有任何錯誤,是否有可能瞭解它是否真的更新?

在此先感謝

+0

您使用的是什麼服務器端語言和驅動程序? – Sammaye

+0

你爲什麼想知道這個?正如我的回答所說 - 沒有辦法知道如果沒有文檔比較,新舊文檔是否相同。無論他們是否是,寫總是發生。 –

+0

哦,在這種情況下,您需要觀看此視頻...... http://www.youtube.com/watch?v=b2F-DItXtZs – raffian

回答

1

有幾種方法可以檢查此問題。

第一個是調用Save之後,調用getLastError方法。在控制檯內,這只是db.getLastError()。

這會告訴你在上次操作過程中是否發生錯誤。更多的細節可以在te地址http://docs.mongodb.org/manual/core/write-operations/#write-concern找到。

另一種方法是調用findAndModify,這將允許您更新文檔並獲取更新的文檔。 http://docs.mongodb.org/manual/reference/command/findAndModify/

這兩個都可以在所有的官方驅動程序。

+0

這不會告訴他更新是否不必要。他不問是否更新發生,這聽起來像他想知道它是否引入了任何新數據... –

+0

@AsyaKamsky使用findAndModify返回原始文檔將允許他們查看文檔是否更新非常容易。 – SCB

+1

只要他們記住物理上的寫作發生了無論 - 他們可以通過比較文檔的新版本和新版本來檢查它是否是無用的寫入。 –

1

保存方法總是寫入記錄。

在Mongo中沒有寫入不會發生的情況,因爲正在保存的記錄與已經存在的記錄相同。寫入操作只會發生並用新數據「覆蓋」現有數據(恰好相同)。

你可以告訴的唯一方法是通過比較新舊文件 - 這是很多額外的工作。

+0

謝謝respnnse。實際上,我想知道哪種方法是理解正在更新的數據是否與現有的AFTER寫入操作完全相同的有效方法。是否有任何方法(如getLastError方法假設它可能會給我比較或任何其他線索)。 – Javatar

+0

它可能是findAndModify - 它默認返回文檔的以前(現在被覆蓋)的版本。然後,您可以將其與您剛剛更新爲的文檔進行比較。 –

相關問題