Tengo el problema de que me gusta "automágicamente" eliminar documentos en mi sofá, que tienen al menos 6 meses de antigüedad. Mi instancia de CouchDb se ejecuta en un servidor Linux, ¿hay alguna forma de lograr esto bastante simple (como escribir un sencillo script de 2 líneas)?CouchDb: ¿cómo eliminar documentos anteriores> 6 meses?
Respuesta
se puede escribir una función de actualización en couchdb que elimina un documento de ciertos criterios (se puede utilizar params al llamar a la función): http://wiki.apache.org/couchdb/Document_Update_Handlers#Creating_an_Update_Handler
(observe "en el lugar" e imagine la configuración "_delete: true").
algo así como
"deletefunc":
...
if(doc.created_at<req.query.mindate) {
doc._deleted:true;
return [doc, "deleted"]
}
y llamando ... db/_Diseño/updatefuncdesigndoc/_update/deletefunc/dok_id_x MinDate = 20110816
El único trabajo es:? Llamando a cada documento en una base de datos explícita con esta función (llamando _all_docs o _changes primero)
Gracias. La función de actualización era lo que estaba buscando. –
Por lo que sé, CouchDB almacena cada base de datos (con todos los documentos) en un solo archivo (). Por lo tanto, no podrá encontrar un documento específico por su nombre o fecha de adición.
ACTUALIZACIÓN:
creo que la única manera sería añadir un campo "_doc_created" (o "_doc_established") a cada documento, con una marca de tiempo (similitud con LSQ NOW()
). A continuación, cree una vista que muestre solo documentos IDs y valores de los campos "_doc_created":
e.G.
function(doc) {
emit(doc._doc_created, doc._id);
//or just emit(doc._doc_created) 'couse views alsways return docIDs
}
y luego escribir un guión (por ejemplo, un script de shell ), que se lleva todos estos identificadores y fechas (a través de rizo), lo filtra y después (una vez más a través de rizo) Elimina todos los documentos de base de datos que _doc_crated
de fecha y hora es mayor de 6 meses a partir de ahora
+1. A diferencia de la mayoría de los sistemas de archivos y sistemas como RoR, CouchDB no requiere ni sugiere que conserve marcas de tiempo en sus datos. Eso es desafortunado, porque las aplicaciones exitosas (es decir, aquellas que "viven" meses o años) casi siempre necesitan esa información más adelante. Como plantar un árbol, ahora es el mejor momento para limpiar datos. Como CouchDB está relajado, puede agregar marcas de tiempo a sus registros según sea necesario y consultarlos y eliminarlos según sea necesario. – JasonSmith
Si bien el enfoque de agregar una marca de tiempo es bueno, el enfoque sugerido para ejecutar el 'script de purga' es un enfoque bastante complejo. Vea la 'función de actualización en couchdb' para un enfoque que es más simple y aprovecha las características apropiadas de couchdb. – Jay
- 1. Eliminar varios documentos en CouchDB
- 2. ¿Cómo puedo eliminar varios documentos en CouchDB?
- 3. SQL Server 2005: cómo restar 6 meses
- 4. Principios para Documentos Modelado CouchDB
- 5. Eliminación de documentos adjuntos en CouchDb
- 6. Estructura de documentos recomendada para CouchDB
- 7. couchdb, acceder al último 10 documentos
- 8. Oracle: Cómo añadir 6 meses hasta la fecha actual
- 9. Cómo identificar la fecha de 6 meses completos
- 10. CouchDB no replica documentos de diseño
- 11. ¿Cómo eliminar documentos de iCloud?
- 12. Cómo proteger CouchDB
- 13. jQuery UI datepicker: agregue 6 meses a otro datepicker
- 14. java.util.Date - ¿Eliminar tres meses de una fecha?
- 15. Obtenga todos los documentos de diseño en CouchDB
- 16. Cómo convertir meses a años-y-meses en Java
- 17. Importación por lotes de documentos json a Apache CouchDb
- 18. Método recomendado para cargar documentos de diseño CouchDB en Python?
- 19. CouchDB: documento único frente a "unión" de documentos juntos
- 20. Cambios en el modelo de documentos de CouchDB?
- 21. ¿Cuánto tiempo puede ser la cadena _id para documentos CouchDB?
- 22. Eliminar un campo de documento antes de guardar en CouchDB?
- 23. CouchDB autorización
- 24. Cómo seleccionar los últimos 6 meses desde la tabla de noticias usando MySQL
- 25. ¿Cómo encuentran los clientes que compraron el producto A y D> 6 meses de diferencia?
- 26. Recuperación de documento CouchDB múltiple con couchdb-python
- 27. ¿Cómo eliminar los contenidos del directorio de Documentos (y no del directorio de Documentos en sí)?
- 28. Cómo eliminar documentos por consulta de manera eficiente en mongo?
- 29. Cómo recuperarse después de eliminar el enlace simbólico libc.so.6?
- 30. Cómo hacer referencia a otros documentos en una vista couchDB (uniéndose a la funcionalidad similar)
He actualizado mi publicación. Espero que lo ayude –
V-Light tiene razón en que no puede hacer esto sin antes tener (1) marcas de tiempo en todos sus documentos, y (2) consultas preparadas para buscar por marca de tiempo. Sin embargo, una vez/si tienes eso, uso 'jss' para el trabajo único de Couch a granel. Básicamente: 'curl --silent $ some_query | jss - '{_id: $ ._ id, _rev: $ ._ rev, _deleted: true}' --bulk-docs | curl --silent $ some_db/_bulk_dos' – JasonSmith
Dado que es muy difícil de encontrar con google, aquí está el enlace a jss: https://github.com/iriscouch/jss –