2012-05-26 39 views
0

我試圖避免修改建立在我的CouchDB中,所以我可以使用TouchDB的「批量拉」進行復制(它在所有1st-revs上大量拉動)。不正確的做法是刪除一個文檔,然後重新創建它而不是修改它,以便所有文檔都保留在rev-1中?CouchDB刪除並重新創建一個文檔

回答

0

刪除CouchDB中的文檔,將不會重置_rev。

CouchDB從不刪除文檔,它只是將最後一個修訂標記爲已刪除。壓縮會刪除以前的版本,只保留最後一版。這是複製正常工作所必需的。這就是爲什麼刪除的文檔修訂不應該包含任何數據,而只能包含文檔的_id和_deleted標誌。

完全刪除任何已刪除文檔的痕跡的唯一方法是將所有文檔複製到新數據庫。但請記住複製的後果。

+0

謝謝Marcello。我想這要成功,我需要幾乎創建一個自定義標識符,並忽略_id ...然後我可以將每個文檔作爲全新的... – ewindsor

+0

我不確定要了解你在嘗試什麼實現。當我通過id引用文檔時,或者換句話說,當應用程序使用id來檢索存儲在文檔中的數據時,我使用自定義_id。這也取決於你想如何解決衝突......但這太多了評論。 –

+0

嗯,我的意思是實際上創建一個新字段用作其他文檔的ID ...並刪除/重新創建每一次。這裏的主要目標是讓每個文檔都是第一版。我有一種感覺,雖然我可能會彎曲CouchDB的方式,它並不意味着。 – ewindsor

0

好,我想說的是,你的建議讓我覺得髒,但不會是一個SO回答這樣..

你提到TouchDB和散裝拉那麼你就有了可以是數據移動應用外部修改,我想要能夠修改它自己的數據。所以我能想到的最大問題是更新衝突解決方案。即。當客戶端處於脫機狀態時,如何處理客戶端和服務器上的文檔更改。我想你會開始做很多同步工作,沙發是爲你處理的。