删除 CouchDB 中的过期文档
Delete expired documents in CouchDB
我正在使用 couchDB 存储一些数据,但在删除 n 天前插入的文档时遇到问题。
所以,我试图通过视图加载我想要删除的文档,并立即对所有文档执行删除请求;但失败了。
示例文档:
{
"date":"20160912",
"_id":"1xxxxx",
"name":"namal"
}
查看函数:
function (doc) {
if(doc.date){
emit(doc.date,doc);
}
}
URL 加载文件:
http://localhost:5984/dbx/_design/viewx/_view/date?key=%2220160910%22
删除请求:
curl -X DELETE http://localhost:5984/dbx/_design/viewx/_view/date?key=%2220160910%22
我知道我可以使用 _id 和 _rev 按文档执行此操作,如下所示。
curl -X DELETE http://localhost:5984/dbx/1xxxxx?rev="1-1111x1111111x222222x333333"
但在这种情况下,我需要一个一个地删除生成的文档。我想要的是,一次删除文档列表(bluk docs)(正如我提到的,实际要求是删除 n 天之前插入的文档)。
此外,我知道更好的清除过期数据的方法是使用 CouchBase 或 MongoDb 设置过期时间。但我正在 CouchDB 实现本身中寻找解决方案。
注意:在这种情况下,我想让它们真正删除。不可见。
- 语言:Java1.7
- OS : Ubuntu 14.04 64 位
- CouchDB 版本:1.6.1
您可以使用 CouchDB 的批量文档 API 来更新文档(将 _deleted
字段设置为 true
的更新与删除一样好)。
对于更持久的东西,您可以使用 CouchDB 的 _purge
命令。 Details here
请注意,此操作不会被复制。因此,如果您有复制设置,则必须在每个数据库上执行此操作。
我正在使用 couchDB 存储一些数据,但在删除 n 天前插入的文档时遇到问题。
所以,我试图通过视图加载我想要删除的文档,并立即对所有文档执行删除请求;但失败了。
示例文档:
{
"date":"20160912",
"_id":"1xxxxx",
"name":"namal"
}
查看函数:
function (doc) {
if(doc.date){
emit(doc.date,doc);
}
}
URL 加载文件:
http://localhost:5984/dbx/_design/viewx/_view/date?key=%2220160910%22
删除请求:
curl -X DELETE http://localhost:5984/dbx/_design/viewx/_view/date?key=%2220160910%22
我知道我可以使用 _id 和 _rev 按文档执行此操作,如下所示。
curl -X DELETE http://localhost:5984/dbx/1xxxxx?rev="1-1111x1111111x222222x333333"
但在这种情况下,我需要一个一个地删除生成的文档。我想要的是,一次删除文档列表(bluk docs)(正如我提到的,实际要求是删除 n 天之前插入的文档)。
此外,我知道更好的清除过期数据的方法是使用 CouchBase 或 MongoDb 设置过期时间。但我正在 CouchDB 实现本身中寻找解决方案。
注意:在这种情况下,我想让它们真正删除。不可见。
- 语言:Java1.7
- OS : Ubuntu 14.04 64 位
- CouchDB 版本:1.6.1
您可以使用 CouchDB 的批量文档 API 来更新文档(将 _deleted
字段设置为 true
的更新与删除一样好)。
对于更持久的东西,您可以使用 CouchDB 的 _purge
命令。 Details here
请注意,此操作不会被复制。因此,如果您有复制设置,则必须在每个数据库上执行此操作。