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

नेवला दो संग्रहों में शामिल होता है और सम्मिलित संग्रह से केवल विशिष्ट फ़ील्ड प्राप्त करता है

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

  • $lookup students . के साथ संग्रह
  • $project आवश्यक फ़ील्ड दिखाने के लिए, $map top10 सरणी के लूप को पुनरावृत्त करने के लिए और अंदर $reduce . का उपयोग करें छात्रों से पूरा नाम प्राप्त करने और $mergeObjects . का उपयोग करके शीर्ष 10 ऑब्जेक्ट के साथ विलय करने के लिए
db.exams.aggregate([
  {
    $lookup: {
      from: "students",
      localField: "top10.studentId",
      foreignField: "_id",
      as: "students"
    }
  },
  {
    $project: {
      test: 1,
      students: {
        $map: {
          input: "$top10",
          as: "top10",
          in: {
            $mergeObjects: [
              "$$top10",
              {
                fullname: {
                  $reduce: {
                    input: "$students",
                    initialValue: 0,
                    in: {
                      $cond: [
                        { $eq: ["$$this._id", "$$top10.studentId"] },
                        "$$this.fullname",
                        "$$value"
                      ]
                    }
                  }
                }
              }
            ]
          }
        }
      }
    }
  }
])

खेल का मैदान

दूसरा विकल्प जिसका आप उपयोग कर सकते हैं $unwind $lookup . से पहले ,

  • $unwind डीकंस्ट्रक्ट top10 सरणी
  • $lookup students . के साथ संग्रह
  • $addFields $arrayElemtAt . का उपयोग करके छात्र सरणी को ऑब्जेक्ट में बदलने के लिए
  • $group _id द्वारा और छात्रों की सरणी का निर्माण करें और आवश्यक फ़ील्ड को पुश करें
db.exams.aggregate([
  { $unwind: "$top10" },
  {
    $lookup: {
      from: "students",
      localField: "top10.studentId",
      foreignField: "_id",
      as: "students"
    }
  },
  { $addFields: { students: { $arrayElemAt: ["$students", 0] } } },
  {
    $group: {
      _id: "$_id",
      test: { $first: "$test" },
      students: {
        $push: {
          studentId: "$top10.studentId",
          score: "$top10.score",
          fullname: "$students.fullname"
        }
      }
    }
  }
])

खेल का मैदान




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. @ क्वालिफायर के साथ समस्याएं

  2. mongoengine के साथ GridFs के बजाय DEFAULT_FILE_STORAGE पर फ़ाइलें अपलोड करें

  3. मैं C# ASP.NET Core API ढांचे के साथ MongoDB ड्राइवर का उपयोग कैसे कर सकता हूं?

  4. मोंगोडीबी जावा ड्राइवर मैप्रिडस कमांड स्कोप के तहत; कार्यक्षेत्र में कार्य जोड़ें

  5. MongoDB में .NET के माध्यम से इंडेक्स कैसे बनाएं?