我知道我可以檢索「可用」文檔的所有修訂,但我可以找回已刪除的文件的最後一個「可用」的版本?我不知道刪除之前的版本ID。這是我目前正在運行的命令...它返回{"error":"not_found","reason":"deleted"}
。我可以檢索已刪除文檔的所有修訂版本嗎?
捲曲-X GET http://localhost:5984/test_database/a213ccad?revs_info=true
我知道我可以檢索「可用」文檔的所有修訂,但我可以找回已刪除的文件的最後一個「可用」的版本?我不知道刪除之前的版本ID。這是我目前正在運行的命令...它返回{"error":"not_found","reason":"deleted"}
。我可以檢索已刪除文檔的所有修訂版本嗎?
捲曲-X GET http://localhost:5984/test_database/a213ccad?revs_info=true
我最近打了好幾次,所以任何人都徘徊由...
這個問題通常從需要知道哪些文件是一種編程模型結果刪除。由於'類型'之類的用戶鍵不存在刪除,而_id最好由沙發分配,因此通常會很高興在頂部下方看到關於刪除的文檔的內容。另一種方法是創建一個爲文檔設置已刪除的過程:True(無下劃線),並調整任何偵聽器過濾器等,以查找已刪除:True。其中一個進程可以實際刪除文檔。這意味着在文檔上觸發的任何進程都不需要跟蹤最終刪除的_id。
你可以通過使用_deleted:true(以及其他任何你想存儲的字段)來保存文檔,並在這樣的編程模型中擁有依賴進程來監視_changes以做出任何他們喜歡的清理來響應刪除。 – natevw 2012-05-02 23:02:02
我有這個問題,試圖恢復已刪除的文件,這裏是我的解決方案:
0),直到你運行一個壓實,被刪除的歷史,如:
curl http://example.iriscouch.com/test/_changes
1)你會看到有$ ID和$ REV刪除的文件,把空文檔作爲新版本,如:
curl -X PUT http://example.iriscouch.com/test/$id?rev=$rev -H "Content-Type: application/json" -d {}
2)現在你可以得到所有的修訂信息,例如:
curl http://example.iriscouch.com/test/$id?revs_info=true
即使在壓縮後,您仍然會在_changes中看到已刪除的文檔。壓縮僅刪除非葉文檔體,即使在壓縮之後,所有[好,達到revs_limit]修訂版元數據也保留以及文檔的最終刪除版本。 – natevw 2013-02-13 20:45:41
見此外_changes
,這樣做的另一個好方法是使用keys
與_all_docs
:
GET $MYDB/_all_docs?keys=["foo"]
- >
{
"offset": 0,
"rows": [
{
"id": "foo",
"key": "foo",
"value": {
"deleted": true,
"rev": "2-eec205a9d413992850a6e32678485900"
}
}
],
"total_rows": 0
}
注意,它有爲keys
; key
將不起作用,因爲只有keys
會返回已刪除文檔的信息。
如果您有很多密鑰,並且IIUC可以將密鑰列表發佈到相同的URL。 – joeforker 2014-08-22 20:20:55
先後後刪除了執行的數據庫壓縮? – bdargan 2011-04-01 10:03:02
沙發的版本是爲了滿足它的需求,而不是我們的需求。舊版本不一定被複制,舊版本可能在壓縮過程中消失。 – 2011-05-13 18:33:42
這不是事實,文檔的最後刪除版本始終保留以確保複製的一致性。壓縮僅刪除舊版本。 – smathy 2012-06-26 03:16:12