Java 删除CouchDB中过期的文档
我正在使用couchDB来存储一些数据,我在删除n天之前插入的文档时遇到了问题 因此,我通过一个视图加载我想要删除的文档,并一次对所有文档执行删除请求;但失败了 示例文档: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) {
{
"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
\u deleted
字段设置为true
的更新与删除一样有效)
更多信息:
对于更持久的内容,可以使用CouchDB的\u purge
命令
请注意,此操作不会被复制。因此,如果您有复制设置,则必须在每个数据库上执行此操作 谢谢你的回答。但它不会删除文档,对吗?它使它隐形。那么,它怎么能像删除一样好呢?正如我在问题中提到的,我想让它真正删除。这是CouchDB行话中的“delete”。您是否正在寻找删除文档所有跟踪和历史记录的内容?你想让这样的“永久删除”同步吗?非常感谢kul。我还没有尝试清除命令。我将对此进行检查。我在您提到的清除文档中发现了一条非常重要的注释。“如果您使用_purge来恢复空间,那么几乎可以肯定您使用CouchDB的方式不恰当。开发人员不恰当地使用_purge的最常见原因是在管理短期数据(日志条目、消息队列等)时。更好的补救方法是定期切换到新数据库并删除旧数据库(一旦其中的条目全部过期)。”。因此,现在我尝试每天创建数据库,并在数据库过期时删除整个数据库。