У меня проблема с тем, что мне нравится "автоматически" удалять документы на моем диване, возраст которых не менее 6 месяцев. Мой экземпляр CouchDb работает на сервере linux, есть ли способ достичь этого достаточно просто (например, написать простую двухстрочную оболочку script)?
CouchDb: Как удалить документы старше> 6 месяцев?
Ответ 1
Вы можете написать функцию обновления в couchdb, которая удаляет документ по определенным критериям (вы можете использовать параметры при вызове функции): 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"]
}
и вызов ... дб /_design/updatefuncdesigndoc/_update/deletefunc/dok_id_x? MinDate = 20110816
Единственная работа: вызов каждого документа в явной базе данных с помощью этой функции (сначала вызов _all_docs или _changes)
Ответ 2
Пока я знаю, CouchDB хранит каждую базу данных (со всеми документами) в одном файле(). Таким образом, вы не сможете найти определенный документ по его имени или добавленному дате.
UPDATE:
Я думаю, что единственным способом было бы добавить в каждый документ поле "_doc_created" (или "_doc_established" ) с меткой времени (сходство с SQLs NOW()
). Затем создайте представление, которое отображает только идентификаторы документов значения полей "_doc_created":
например.
function(doc) {
emit(doc._doc_created, doc._id);
//or just emit(doc._doc_created) 'couse views alsways return docIDs
}
а затем напишите script (eG a shell-script), который получает все эти идентификаторы и DATE (через curl), фильтрует его и затем (снова через curl) УДАЛЯЕТ все документы из базы данных, которые _doc_crated
datetime старше 6 месяцев.