Tenemos una representación CouchDB de una base de datos XML que usamos para impulsar un front-end basado en JavaScript para manipular los documentos XML. La estructura básica es una jerarquía simple de 3 niveles. es decirCómo hacer referencia a otros documentos en una vista couchDB (uniéndose a la funcionalidad similar)
A -> B -> C
A: documento de nivel superior (tipo A) B: cualquier número de documentos hijos de una matriz de tipo A C: cualquier número de documentos hijos de una matriz de tipo B
Representamos estos 3 tipos de documentos en CouchDB con un atributo type
:
por ej.
{
"_id":"llgc-id:433",
"_rev":"1-3760f3e01d7752a7508b047e0d094301",
"type":"A",
"label":"Top Level A document",
"logicalMap":{
"issues":{
"1":{
"URL":"http://hdl.handle.net/10107/434-0",
"FILE":"llgc-id:434"
},
"2":{
"URL":"http://hdl.handle.net/10107/467-0",
"FILE":"llgc-id:467"
etc...
}
}
}
}
{
"_id":"llgc-id:433",
"_rev":"1-3760f3e01d7752a7508b047e0d094301",
"type":"B",
"label":"a B document",
}
Lo que quiero hacer es producir una vista que devuelve los documentos al igual que el tipo A, sino que incluye el atributo de la etiqueta del documento B dentro de la lista, por ejemplo, logicalMap
{
"_id":"llgc-id:433",
"_rev":"1-3760f3e01d7752a7508b047e0d094301",
"type":"A",
"label":"Top Level A document",
"logicalMap":{
"issues":{
"1":{
"URL":"http://hdl.handle.net/10107/434-0",
"FILE":"llgc-id:434",
"LABEL":"a B document"
},
"2":{
"URL":"http://hdl.handle.net/10107/467-0",
"FILE":"llgc-id:467",
"LABEL":"another B document"
etc...
}
}
}
}
Estoy luchando para entender la mejor manera de llevarlo a cabo. ¡Parece que debería ser bastante simple!
Este emite cada número en un resultado separado no lo hace, aunque ? Tenía la esperanza de crear un único documento para emitir – Surfrdan
También podría 'emitir (doc._id, {_ id: doc.logicalMap.issues [i] ['FILE']});' y luego fusionar los resultados en un ' reducir la función, sin embargo, debe mantener reducir los resultados tan pequeños como sea posible en números, así que prefiero mover ese código al lado del cliente. –
En lugar de fusionar los resultados en una función de reducción, puede intentar hacer una función de lista en su lugar. –