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

मोंगोडब में $ लुकअप नेस्टेड सरणी

यदि आपके पास मोंगोडब संस्करण है 3.6 तो आप नेस्टेड $lookup के साथ कोशिश कर सकते हैं एकत्रीकरण...

db.collection.aggregate([
  { "$lookup": {
    "from": Albums.collection.name,
    "let": { "albums": "$albums" },
    "pipeline": [
       { "$match": { "$expr": { "$in": [ "$_id", "$$albums" ] } } },
       { "$lookup": {
         "from": Songs.collection.name,
         "let": { "songs": "$songs" },
         "pipeline": [
           { "$match": { "$expr": { "$in": [ "$_id", "$$songs" ] } } }
         ],
         "as": "songs"
       }}
     ],
     "as": "albums"
  }}
 ])

और लंबे समय तक चलने वाली व्याख्या के लिए आप $lookup एकाधिक स्तरों के माध्यम से जा सकते हैं। $अनविंड?

या यदि आपके पास 3.6 . से पहले का मोंगोडब संस्करण है

db.collection.aggregate([
  { "$lookup": {
    "from": Albums.collection.name,
    "localField": "albums",
    "foreignField": "_id",
    "as": "albums"
  }},
  { "$unwind": "$albums" },
  { "$lookup": {
    "from": Songs.collection.name,
    "localField": "albums.songs",
    "foreignField": "_id",
    "as": "albums.songs",
  }},
  { "$group": {
    "_id": "$_id",
    "name": { "$first": "$name" },
    "started_in": { "$first": "$started_in" },
    "active": { "$first": "$active" },
    "country": { "$first": "$country" },
    "albums": {
      "$push": {
        "_id": "$albums._id",
        "title": "$albums.title",
        "released": "$albums.released",
        "type": "$albums.type",
        "songs": "$albums.songs"
      }
    }
  }}
])



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. त्रुटि TS2688:'bson' के लिए प्रकार परिभाषा फ़ाइल नहीं ढूँढ सकता

  2. मोंगोडब में मुख्य मूल्य जोड़ी में विशिष्ट स्ट्रिंग कैसे खोजें?

  3. MongoDB के डेटा फ़ोल्डर को स्थानांतरित करना?

  4. खाली सरणी दस्तावेज़ को क्वेरी में प्रकट होने से रोकती है

  5. दो संग्रहों पर एक मोंगो अंतर की तुलना करें