2016-09-14 2 views
0

Я использую couchDB для хранения некоторых данных, и у меня возникла проблема с удалением документов, которые были вставлены до n дней.Удаление истекших документов в CouchDB

Итак, я стараюсь загрузить документ, который я хочу удалить с помощью представления, и сделать запрос DELETE для всех из них одновременно; но не удалось.

Образец документа:

{ 
"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) сразу (как я уже упоминал, фактическая requremnet - удалить документы, которые были вставлены до n дней).

Кроме того, я знаю, что лучший способ очистить истекшие данные - установить время истечения срока действия с помощью CouchBase или MongoDb. Но я ищу solutin внутри самой реализации CouchDB.

Примечание: В этом случае я хочу, чтобы они действительно удаляли. Не невидимо.

  • Язык: Java 1.7
  • ОС: Ubuntu 14,04 64 бит
  • CouchDB версия: 1.6.1

ответ

1

Вы можете использовать насыпной документ API CouchDB для обновления документов (обновление, которое устанавливает поле _deleted - true - это как удаление).

Подробнее: http://wiki.apache.org/couchdb/HTTP_Bulk_Document_API#Modify_Multiple_Documents_With_a_Single_Request

Для более постоянного, вы можете использовать _purge Command CouchDB в. Details here

Обратите внимание, что эта операция не реплицируется. Поэтому, если у вас есть настройка репликации, вам нужно будет сделать это в каждой базе данных.

+0

Благодарим вас за ответ. Но он не удаляет документ правильно? Это делает его невидимым. Итак, как это может быть хорошо, как удалить? И я хочу, чтобы он фактически удалялся, как я упоминал в проблеме. – namalfernandolk

+0

Это 'delete' в CouchDB lingo. Вы ищете что-то, что удаляет все следы и историю документа? И вы хотите, чтобы такое «постоянное удаление» синхронизировалось? – Kul

+0

Да. Я хочу навсегда удалить их и освободить место – namalfernandolk

Смежные вопросы