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

मैं MongoDB एकत्रीकरण पाइपलाइन में नेस्टेड जॉइन (3 या अधिक संग्रह में शामिल) कैसे कर सकता हूं?

का उपयोग करके नेस्टेड लुकअप करें पाइपलाइन के साथ लुकअप ,

  • $lookup orders के साथ संग्रह,
    • let , चर परिभाषित करें customer_id यह मुख्य संग्रह से है, $$ . का उपयोग करके पाइपलाइन के अंदर इस संदर्भ चर का उपयोग करने के लिए जैसे $$customer_id ,
    • pipeline पाइपलाइन चरणों को उसी तरह जोड़ सकते हैं जैसे हम रूट स्तर पाइपलाइन में करते हैं
    • $expr जब भी हम आंतरिक क्षेत्रों से मेल खाते हैं तो इसके लिए अभिव्यक्ति मिलान की स्थिति की आवश्यकता होती है, इसलिए $$customer_id मूल संग्रह फ़ील्ड है जिसे let . में घोषित किया गया है और $customer_id बाल संग्रह/वर्तमान संग्रह का क्षेत्र है
  • $lookup orderitems . के साथ संग्रह
db.customers.aggregate([
  {
    $lookup: {
      from: "orders",
      let: { customer_id: "$customer_id" },
      pipeline: [
        { $match: { $expr: { $eq: ["$$customer_id", "$customer_id"] } } },
        {
          $lookup: {
            from: "orderitems",
            localField: "order_id",
            foreignField: "order_id",
            as: "items"
          }
        }
      ],
      as: "orders"
    }
  }
])

खेल का मैदान




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB में लिफ्ट स्टोर BigDecimal

  2. MongoDB:नए प्रतिकृति सेट मास्टर से कनेक्ट नहीं हो सकता

  3. मोंगो बल्क एकल क्वेरी में मिलान किए गए दस्तावेज़ फ़ील्ड को ढूंढें और अपडेट करें?

  4. MongoDb में स्वीकृत एंबेडेड दस्तावेज़ों की अधिकतम गहराई क्या है?

  5. आलसी_स्थैतिक के साथ 'प्रतीक्षा' का उपयोग करने का विकल्प! जंग में मैक्रो?