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

एक ही संग्रह के सभी दस्तावेज़ों से सरणी के ऑब्जेक्ट में मौजूद आईडी के आधार पर फ़िल्टरिंग सूची के लिए MongoDb एकत्रीकरण

आप कोशिश कर सकते हैं,

  • $facet 2 सरणियाँ बनाने के लिए, users उपयोगकर्ता विवरण नाम और छात्र आईडी, दूसरे सभी उपयोगकर्ता विवरण allUsers . में
  • $project पुनरावृति लूप
    • $map सभी उपयोगकर्ता सरणी के रूप में इनपुट करें
    • $map छात्रों के रूप में इनपुट दिया गया सरणी
    • $map छात्र सरणी के रूप में इनपुट करें
    • $reduce users . से छात्र का डेटा प्राप्त करने के लिए ऐरे जब कंडीशन मैच होता है
  • $unwind सभी उपयोगकर्ता सरणी का पुनर्निर्माण करें
  • $replaceWith सभी उपयोगकर्ता ऑब्जेक्ट को रूट में बदलें
db.collection.aggregate([
  {
    $facet: {
      users: [
        {
          $project: {
            studentId: 1,
            name: 1
            // add fields as you want it will automatically reflect in join
          }
        }
      ],
      allUsers: []
    }
  },
  {
    $project: {
      allUsers: {
        $map: {
          input: "$allUsers",
          in: {
            $mergeObjects: [
              "$$this",
              {
                studentsReffered: {
                  $map: {
                    input: "$$this.studentsReffered",
                    in: {
                      $mergeObjects: [
                        "$$this",
                        {
                          students: {
                            $map: {
                              input: "$$this.students",
                              as: "s",
                              in: {
                                $reduce: {
                                  input: "$users",
                                  initialValue: { studentId: "$$s.studentId" },
                                  in: {
                                    $cond: [
                                      { $eq: ["$$this.studentId", "$$s.studentId"] },
                                      "$$this",
                                      "$$value"
                                    ]
                                  }
                                }
                              }
                            }
                          }
                        }
                      ]
                    }
                  }
                }
              }
            ]
          }
        }
      }
    }
  },
  { $unwind: "$allUsers" },
  { $replaceWith: "$allUsers" }
])

खेल का मैदान




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. भिक्षु के साथ मोंगो डीबी:डीबी डाउन होने पर त्रुटि पकड़ने और संभालने में त्रुटि

  2. MongoDB में लेनदेन समर्थन

  3. एपीआई कनेक्ट से पता चलता है कि स्कीमा अपडेट करते समय GET /apim/ त्रुटि नहीं हो सकती है

  4. MongoDB डॉक्स DBREFs का उपयोग न करने की सलाह क्यों देते हैं?

  5. नेवला बनाम मोंगोडब (नोडज मॉड्यूल/एक्सटेंशन), ​​जो बेहतर है? और क्यों?