Crear una vista que emite todos los identificadores de doc. Las teclas de vista se usarán para ordenar automáticamente.
function(doc) {
if(doc.type && doc.type === 'message'){
emit(doc._id, null);
}
}
a continuación, ejecutar una consulta: http://host/yourdb/_design/yourdesigndoc/_view/viewname?limit=10&include_docs=true&descending=true
porque desea que el documento completo, que no incluimos nada como el valor en la vista. En su lugar, agregamos include_docs=true
para buscar cada documento completo para las entradas de la vista.
Tenga en cuenta que también hay una vista incorporado que hace lo mismo: http://host/yourdb/_all_docs?limit=10&include_docs=true&descending=true
PS: Usted debe ser consciente del hecho de que CouchDB por defecto usa UUID como identificadores, lo que hará que la clasificación más o menos inútil, si realmente quieres obtener los últimos documentos. Proporcione sus propios ID incrementales (¿qué ocurre con la distribución/replicación?) O utilice un nuevo campo que almacena la hora en que se ha creado el documento y también lo utiliza en la vista.
Si sus documentos tienen un created
campo (es decir, marca de tiempo UNIX, JavaScript Date.now() o incluso una cadena de RFC 3339-como), se puede construir un índice en estos valores.
Aquí es la vista basada en el tiempo:
function(doc) {
if(doc.type && doc.type === 'message' && doc.created){
emit(doc.created, null);
}
}
Tenga en cuenta que no vamos a emitir la doc._id sí. Sin embargo, CouchDB almacena el doc._id
de donde provienen los datos para cada par clave/valor emitido automáticamente, por lo que podemos utilizar include_docs=true
nuevamente para buscar los documentos completos.
de consulta http://host/yourdb/_design/yourdesigndoc/_view/viewname?limit=10&include_docs=true&descending=true
Gracias por la respuesta. Sin embargo, al hacerlo, devolverá los 10 documentos más antiguos que contengan tipo: mensaje. Necesito los 10 documentos más nuevos. La única forma en que puedo pensar en hacer esto es extraer cada identificación de documento, tomar los últimos 10 identificadores de ese conjunto de resultados, y luego llamar los documentos directamente con los identificadores ... Simplemente no parece que sea la forma correcta de hacerlo eso. – Brian
¿Has leído mi PS? Depende de cómo se generan/asignan sus doc._ids. Quizás deba cambiar a 'descendente = falso' o incluso agregar un campo generado a sus documentos y usarlo. –
wow no, no, juro que lo he intentado 100 veces jaja ... no tengo idea de dónde lo eché a perder. ¡Gracias! – Brian