我有一个问题,我喜欢“自动”删除我沙发上至少6个月大的文件。 我的CouchDb实例在linux服务器上运行,有没有办法实现这个非常简单(比如写一个简单的2行shell脚本)?
我有一个问题,我喜欢“自动”删除我沙发上至少6个月大的文件。 我的CouchDb实例在linux服务器上运行,有没有办法实现这个非常简单(比如写一个简单的2行shell脚本)?
您可以在couchdb中编写一个更新函数,删除某些条件的文档(您可以在调用函数时使用params): http://wiki.apache.org/couchdb/Document_Update_Handlers#Creating_an_Update_Handler
(看看“就地”并想象设置“_delete:true”)。
就像是
"deletefunc":
...
if(doc.created_at<req.query.mindate) {
doc._deleted:true;
return [doc, "deleted"]
}
并打电话 ... DB / _design / updatefuncdesigndoc / _Update / deletefunc / dok_id_x?MINDATE = 20110816
唯一的工作是:使用此函数显式调用数据库中的每个doc(首先调用_all_docs或_changes)
只要我知道,CouchDB将每个数据库(包含所有文档)存储在一个 单个文件 ()。因此,您将无法通过其名称或添加日期时间找到特定文档。
更新:
我认为唯一的方法是在每个文档中添加一个“_doc_created”(或“_doc_established”)字段,并带有时间戳(与SQL的相似之处) NOW()
)。然后创建一个视图,仅显示文档ID的值为“_doc_created”字段:
例如。
function(doc) {
emit(doc._doc_created, doc._id);
//or just emit(doc._doc_created) 'couse views alsways return docIDs
}
然后写一个脚本(例如a shell脚本)获取所有这些ID和日期(通过 卷曲),过滤它然后(再次通过 卷曲删除数据库中的所有文档 _doc_crated
datetime从现在开始超过6个月