8
XML文書を操作するためのjavascriptベースのフロントエンドに使用するXMLデータベースのCouchDB表現があります。基本的な構造は単純な3レベル階層です。すなわちcouchDBビューで他のドキュメントを参照する方法(同様の機能を結合する)
A - > B - > C
A:親文書(タイプA) B:親の子文書の任意の数の Cを入力します。親タイプB
の子文書の任意の数type
属性を持つこれらの3つのドキュメントタイプをCouchDBで表します。
私が何をしたいか
{
"_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",
}
はちょうどタイプのような文書を返しますが、例えばlogicalMapリスト内のBの文書からlabel属性を含むビューを生成しています
{
"_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...
}
}
}
}
私はこれを実行するための最良の方法のまわりで私の頭を取得するために苦労しています。それはかなり簡単だろうと思われる!
で問い合わせるhttp://wiki.apache.org/couchdb/Introduction_to_CouchDB_views#Linked_documents
(未テスト)
の「リンクされたドキュメント」のセクションを見てください私は単一のドキュメントを作成して、それを生成することを望んでいました – Surfrdan
あなたは 'emit(doc._id、{_ id:doc.logicalMap.issues [i] ['FILE']});'を実行し、しかし、あなたは結果を小さく抑えておくべきです可能な限り数字になっているので、私はむしろそのコードをクライアント側に移したいと思っています。 –
reduce関数で結果をマージするのではなく、代わりにリスト関数を作成してみてください。 –