Abbiamo una rappresentazione CouchDB di un database XML che usiamo per alimentare un front-end basato su javascript per manipolare i documenti XML. La struttura di base è una semplice gerarchia a 3 livelli. cioèCome fare riferimento ad altri documenti in una vista divanoDB (unendo funzionalità simile)
A -> B -> C
A: documento principale (tipo A) B: qualsiasi numero di documenti figlio di genitore di tipo A C: qualsiasi numero di documenti figli di tipo genitore B
Rappresentiamo questi 3 tipi di documenti in CouchDB con un attributo type
:
es.
{
"_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",
}
Quello che voglio fare è produrre una visione che restituisce i documenti proprio come il tipo A, ma include l'attributo etichette dal documento B all'interno della lista logicalMap esempio
{
"_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...
}
}
}
}
Sto lottando per ottenere la mia testa intorno al modo migliore per eseguire questo. Sembra che dovrebbe essere abbastanza semplice però!
Questo emette ogni numero in un risultato separata anche se non lo fa ? Speravo di creare un singolo documento per emettere – Surfrdan
Si potrebbe anche 'emettere (doc._id, {_ id: doc.logicalMap.issues [i] ['FILE']});' e quindi unire i risultati in un ' riduci la funzione, tuttavia, dovresti mantenere i risultati ridotti come piccoli il più possibile in numeri, quindi preferirei spostare quel codice sul lato client. –
Invece di unire i risultati in una funzione di riduzione, è possibile provare a creare una funzione di elenco. –