Java 删除CouchDB中过期的文档

Java 删除CouchDB中过期的文档,java,couchdb,Java,Couchdb,我正在使用couchDB来存储一些数据,我在删除n天之前插入的文档时遇到了问题 因此,我通过一个视图加载我想要删除的文档,并一次对所有文档执行删除请求;但失败了 示例文档: { "date":"20160912", "_id":"1xxxxx", "name":"namal" } curl -X DELETE http://localhost:5984/dbx/_design/viewx/_view/date?key=%2220160910%22 查看功能: function (doc) {

我正在使用couchDB来存储一些数据,我在删除n天之前插入的文档时遇到了问题

因此,我通过一个视图加载我想要删除的文档,并一次对所有文档执行删除请求;但失败了

示例文档:

{
"date":"20160912",
"_id":"1xxxxx",
"name":"namal"
}
curl -X DELETE http://localhost:5984/dbx/_design/viewx/_view/date?key=%2220160910%22
查看功能:

function (doc) {
       if(doc.date){
          emit(doc.date,doc);
       }
    }
加载文档的URL:

{
"date":"20160912",
"_id":"1xxxxx",
"name":"namal"
}
curl -X DELETE http://localhost:5984/dbx/_design/viewx/_view/date?key=%2220160910%22

删除请求:

{
"date":"20160912",
"_id":"1xxxxx",
"name":"namal"
}
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
  • 操作系统:Ubuntu 14.04 64位
  • CouchDB版本:1.6.1

您可以使用CouchDB的批量文档API来更新文档(将
\u deleted
字段设置为
true
的更新与删除一样有效)

更多信息:

对于更持久的内容,可以使用CouchDB的
\u purge
命令


请注意,此操作不会被复制。因此,如果您有复制设置,则必须在每个数据库上执行此操作

谢谢你的回答。但它不会删除文档,对吗?它使它隐形。那么,它怎么能像删除一样好呢?正如我在问题中提到的,我想让它真正删除。这是CouchDB行话中的“delete”。您是否正在寻找删除文档所有跟踪和历史记录的内容?你想让这样的“永久删除”同步吗?非常感谢kul。我还没有尝试清除命令。我将对此进行检查。我在您提到的清除文档中发现了一条非常重要的注释。“如果您使用_purge来恢复空间,那么几乎可以肯定您使用CouchDB的方式不恰当。开发人员不恰当地使用_purge的最常见原因是在管理短期数据(日志条目、消息队列等)时。更好的补救方法是定期切换到新数据库并删除旧数据库(一旦其中的条目全部过期)。”。因此,现在我尝试每天创建数据库,并在数据库过期时删除整个数据库。