से पदानुक्रमित/नेस्टेड डेटा पुनर्प्राप्त करना मैं couchDB के लिए बहुत नया हूं और "how to store hierarchical data" पढ़ने के बाद भी यह अभी तक अभी तक क्लिक नहीं कर रहा है।कॉच डीबी
विकी में वर्णित पूर्ण पथ पैटर्न का उपयोग करने के बजाय मैं बच्चों को यूयूआईडी और माता-पिता को एक यूयूआईडी के रूप में ट्रैक रखने की उम्मीद कर रहा हूं। मैं इस पैटर्न की ओर झुका रहा हूं ताकि मैं बच्चों के क्रम में बच्चों के क्रम को अपने पदों से बनाए रख सकूं।
सोफे में कुछ नमूना दस्तावेज़ यहां दिए गए हैं, बाल्टी में बाल्टी और आइटम हो सकते हैं, वस्तुओं में केवल अन्य आइटम हो सकते हैं। (UUIDs स्पष्टता के लिए संक्षिप्त):
{_id: 3944
name: "top level bucket with two items"
type: "bucket",
parent: null
children: [8989, 4839]
}
{_id: 8989
name: "second level item with no sub items"
type: "item"
parent: 3944
}
{
_id: 4839
name: "second level bucket with one item"
type: "bucket",
parent: 3944
children: [5694]
}
{
_id: 5694
name: "third level item (has one sub item)"
type: "item",
parent: 4839,
children: [5390]
}
{
_id: 5390
name: "fourth level item"
type: "item"
parent: 5694
}
यह एक नक्शे के समारोह के भीतर एक एम्बेडेड दस्तावेज़ आईडी द्वारा एक दस्तावेज को देखने के लिए संभव है?
function(doc) {
if(doc.type == "bucket" || doc.type == "item")
emit(doc, null); // still working on my key value output structure
if(doc.children) {
for(var i in doc.children) {
// can i look up a document here using ids from the children array?
doc.children[i]; // psuedo code
emit(); // the retrieved document would be emitted here
}
}
}
}
एक आदर्श दुनिया में अंतिम JSON आउटपुट कुछ ऐसा दिखाई देगा।
{"_id":3944,
"name":"top level bucket with two items",
"type":"bucket",
"parent":"",
"children":[
{"_id":8989, "name":"second level item with no sub items", "type":"item", "parent":3944},
{"_id": 4839, "name":"second level bucket with one item", "type":"bucket", "parent":3944, "children":[
{"_id":5694", "name":"third level item (has one sub item)", "type":"item", "parent": 4839, "children":[
{"_id":5390, "name":"fourth level item", "type":"item", "parent":5694}
]}
]}
]
}
मार्सेलो की मदद के लिए धन्यवाद। जब मैं नक्शा फ़ंक्शन चलाता हूं तो आउटपुट घोंसला नहीं होता है क्योंकि मैं उम्मीद कर रहा था, यह सब फ्लैट है। कोई विचार? – berg
मेरा उत्तर है [यहां] (http://stackoverflow.com/questions/6084741/how-to-merge-view-collation-into-useful-output-in-couchdb/6094540#6094540)। हालांकि मैं इसे पुनः प्राप्त नहीं करता हूं। नेस्टेड सूची का क्या फायदा है? फ्लैट सूची का आदेश दिया जाता है ताकि प्रत्येक "आइटम" या "बाल्टी" तुरंत अपने बच्चों द्वारा अनुरोधित आदेश में पीछा किया जा सके। यह इस सूची को पार करने के लिए बहुत आसान और कुशल है। आपको नेस्टेड सूची की आवश्यकता क्यों है? हो सकता है कि मैं आपको एक बेहतर समाधान दे सकता हूं। –
मैं अपने क्लाइंट साइड जावास्क्रिप्ट कोड में सीधे परिणामों का उपयोग करने की उम्मीद कर रहा था, जो डेटा को घोंसला वापस आने की उम्मीद कर रहा है। लेकिन आपके द्वारा लिंक किए गए प्रश्न को पढ़ने के बाद यह लगता है कि यह कॉच डीबी के अनाज के खिलाफ चला जाता है, इसलिए मैं इस ग्राहक पक्ष को करने की योजना बनाउंगा! धन्यवाद फिर से मैं इसे जवाब के रूप में चिह्नित करूंगा! – berg