2013-01-15 60 views

回答

3

由於@菲利普暗示有一種方法可以做到這一點。你實際上可以使用save函數(http://www.mongodb.org/display/DOCS/CSharp+Driver+Tutorial#CSharpDriverTutorial-Save%3CTDocument%3Emethod),它會在數據庫端執行他對你說的話。

所以,想象一下你的文件:

{ 
    _id: {}, 
    d: 1 
} 

_id已經存在,它會與此替換之前的文件。

整潔吧?

+1

使用是否危險?保存一般?我想,將一個任意的Id值插入到文檔中並將其作爲http PUT發送到服務器是相當容易的。如果不先檢查是否存在現有文檔,該操作最終可能會以POST的形式出現,但沒有POST後方法的控制器邏輯。沒有進一步的信息,我使用.Update和。用C#驅動程序替換。 –

+0

@Besrl這是一個很好的觀點,它可以是相當危險的,你應該始終確保文檔的_id被驗證和檢查你的應用程序邏輯,以及其他東西 – Sammaye

+0

也有'Update.Replace'構建器的情況下當你需要做更新時,例如樂觀併發版本控制。 –

1

當我理解正確的話,你有新的數據和文檔B您希望它完全替換文檔A.

在這種情況下,您可以將文檔B的_id字段明確設置爲文檔A的_id字段的值。然後保存文檔B時,它將替換文檔A在數據庫中。

當保存的文檔具有現有文檔的標識時,數據庫會將其視爲該文檔的新版本,而不是新文檔。

相關問題