我知道我可以检索“可用”文档的所有修订,但我可以找回已删除的文件的最后一个“可用”的版本?我不知道删除之前的版本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