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

MongoDB के साथ पुनरावर्ती रूप से वृक्ष संरचना को कैसे क्वेरी करें?

आपके उपयोग के मामले के आधार पर, MongoDB v3.4 एक एकत्रीकरण पाइपलाइन प्रदान करता है $graphLookup नाम का ऑपरेटर . एकत्रीकरण ऑपरेटर संग्रह पर पुनरावर्ती खोज करने में सक्षम है। $graphLookup definition पर और निश्चित देखें .

उदाहरण के तौर पर अपने दस्तावेज़ों के पदानुक्रम और उपरोक्त मानों का उपयोग करके, आप नीचे एकत्रीकरण चलाने का प्रयास कर सकते हैं:

db.collectionName.aggregate([

                {$unwind:{
                        path:"$childrenIdList", 
                        preserveNullAndEmptyArrays: true}
                  }, 
                {$graphLookup:{
                        from:"collectionName", 
                        startWith:"$_id", 
                        connectFromField:"_id", 
                        connectToField:"childrenIdList", 
                        as:"myparents",  
                        restrictSearchWithMatch: {"_id"}}
                  }, 
                {$match: {"_id": 7 } },
                {$group:{
                        _id:"$_id", 
                        parents:{$addToSet:"$myparents._id"}
                  }}
]);

उपरोक्त परिणाम नीचे दिया जाना चाहिए:

{ "_id" : 7, "parents" : [ [ 1, 2, 4 ] ] }

ऐसा कहने के बाद, यदि आपके पास एक बड़ा संग्रह है, तो उपरोक्त क्वेरी प्रदर्शनकारी नहीं हो सकती है क्योंकि आप प्रदर्शन कर रहे होंगे $अनविंड प्रत्येक दस्तावेज़ पर और अनुक्रमणिका का उपयोग करने में सक्षम नहीं होंगे। जैसा कि दूसरों ने सुझाव दिया है, आपको अपने दस्तावेज़ मॉडल संरचना पर फिर से विचार करना चाहिए। देखें डेटा मॉडल ट्री स्ट्रक्चर . अपने एप्लिकेशन लॉजिक और क्वेरी उपयोग के मामले के आधार पर ऑप्टिमाइज़ करें, और लचीले दस्तावेज़ स्कीमा का पालन करें।




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. किसी सरणी में किसी आइटम को अपडेट करें जो किसी सरणी में है

  2. मोंगोडब एकत्रीकरण पाइपलाइन समूह पुश को कैसे सीमित करें

  3. MongoDB से यादृच्छिक नमूना भारी विषम परिणाम लौटा रहा है

  4. नोड.जेएस और नेवला में कॉलबैक से वापसी मूल्य

  5. मैं pymongo.cursor.Cursor ऑब्जेक्ट को कैसे पुनः प्राप्त और प्रिंट कर सकता हूँ?