MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

मोंगोडब:केवल पेड़ के पत्ते प्राप्त करें

यदि आप कोई फ़ील्ड जोड़ते हैं parent प्रत्येक नोड के लिए माता-पिता को पकड़ने के लिए, यह बड़े डेटासेट पर क्वेरी को अनुकूलित करने में मदद कर सकता है। उदाहरण के लिए:

{"parent": "", "node": "#a"}
{"parent": "#a", "node": "#a#b"}
{"parent": "#a", "node": "#a#c"}
{"parent": "#a#b", "node": "#a#b#1"}
{"parent": "#a#b", "node": "#a#b#2"}
{"parent": "#a#c", "node": "#a#c#1"}
{"parent": "#a#c#1", "node": "#a#c#1#x"}

फिर आप $graphLookup (एकत्रीकरण) का उपयोग कर सकते हैं पार करने के लिए ऑपरेटर।

#a#c . के लिए ट्री नोड के सभी बच्चों को प्राप्त करने के लिए आपकी रेगेक्स क्वेरी का एक विकल्प :

db.tree.aggregate([
        {$match:{"node":"#a#c"}}, 
        {$graphLookup:{
                       from:"tree", 
                       startWith:"$node", 
                       connectFromField:"node", 
                       connectToField:"parent", 
                       as:"dep"}}, 
        {$project:{"dep.node":1, "_id":0}}
])

#a#c . के केवल पत्ते ढूंढें :

db.tree.aggregate([
        {$match:{"parent": {$regex:"^#a#c"}}}, 
        {$graphLookup:{
                       from:"tree", 
                       startWith:"$node", 
                       connectFromField:"node", 
                       connectToField:"parent", 
                       as:"dep"}}, 
        {$match:{dep:[]}}, 
        {$project:{"_id":0, node:1}}
])

मैं मॉडल ट्री स्ट्रक्चर्स की समीक्षा करने की भी सिफारिश करूंगा। , MongoDB में ट्री डेटा संरचनाओं का उपयोग करने के कई तरीके हैं। आपके उपयोग के मामले के आधार पर आपको अपने आवेदन पूछताछ लाभों के लिए कुछ संरचनाओं को नियोजित करना चाहिए।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Junit/Fongo:NotNull . की जांच के लिए यूनिट टेस्ट में फोंगो का उपयोग कैसे करें

  2. स्प्रिंग सुरक्षा और MongoDB के साथ प्रमाणीकरण

  3. मनमाना गहराई पर MongoDB फ़ील्ड नाम कैसे खोजें

  4. MongoDB डेटाबेस परिनियोजन स्वचालन

  5. MongoDB सबफील्ड की सूची प्रक्षेपण