Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MongoDB

MongoDB कलेक्शन से सरणी कैसे प्राप्त करें?

MongoDB में नेस्टेड सरणियों को फ्लैट करके एकल सरणी प्राप्त करने के लिए एग्रीगेशन फ्रेमवर्क में $unwind और $group स्टेज का उपयोग करें।

उदाहरण

जटिल नेस्टेड सरणी वाला दस्तावेज़ बनाएं:

> db.getArrayDemo.insertOne(
  {
    "CustomerId": 101,
    "CustomerDetails": [
      {
        "CustomerName": "Larry",
        "CustomerFriendDetails": [
          {"CustomerFriendName": "Sam"},
          {"CustomerFriendName": "Robert"}
        ]
      },
      {
        "CustomerName": "Chris",
        "CustomerFriendDetails": [
          {"CustomerFriendName": "David"},
          {"CustomerFriendName": "Carol"}
        ]
      }
    ]
  }
);
{ "acknowledged" : true, "insertedId" : ObjectId("5cda4949b50a6c6dd317adb7") }

दस्तावेज़ देखें:

> db.getArrayDemo.find().pretty();

एग्रीगेशन से सभी दोस्तों के नाम एक सरणी में प्राप्त करें

> db.getArrayDemo.aggregate([
  { "$unwind": "$CustomerDetails" },
  { "$unwind": "$CustomerDetails.CustomerFriendDetails" },
  {
    "$group": {
      "_id": null,
      "CustomerFriendDetails": { "$push": "$CustomerDetails.CustomerFriendDetails.CustomerFriendName" }
    }
  }
]);

आउटपुट:

{ "_id" : null, "CustomerFriendDetails" : [ "Sam", "Robert", "David", "Carol" ] }

चरण दर चरण:

  1. $unwind: "$CustomerDetails" - बाहरी सरणी को फ्लैट करता है
  2. $unwind: "$CustomerDetails.CustomerFriendDetails" - आंतरिक सरणी को फ्लैट करता है
  3. $group के साथ $push - सभी नामों को एक सरणी में संग्रहीत करता है

उपयोग: यह पैटर्न रिपोर्टिंग, विश्लेषण, या किसी भी स्थिति के लिए उपयोगी है जहां नेस्टेड सरणियों से मान निकालकर एकल सूची बनानी हो।

  1. - MongoDB कलेक्शन से यूनिक मान प्राप्त करें

    यूनिक मान प्राप्त करने और डुप्लिकेट को अनदेखा करने के लिए, MongoDB में distinct() का उपयोग करें। distinct() एक सिंगल कलेक्शन में निर्दिष्ट फील्ड के लिए विशिष्ट मान ढूंढता है और परिणाम को एक ऐरे में लौटाता है। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo704.insertOne({LanguageCode:hi});

  1. - MongoDB क्वेरी: कलेक्शन से पूरा ऐरे हटाएं

    कलेक्शन से पूरा ऐरे हटाने के लिए, MongoDB में $unset का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo609.insertOne({ListOfSubject:[MySQL,MongoDB]}); { acknowledged : true, insertedId : ObjectId(5e974695f57d0dc0b182d62c) } > db.demo609.insertOne({ListOfSubject:[Java]}); { a

  1. - MongoDB कलेक्शन से डुप्लिकेट कैसे हटाएं?

    MongoDB कलेक्शन में डुप्लिकेट दस्तावेज़ों को रोकने के लिए, आप उस फ़ील्ड पर एक यूनिक इंडेक्स बना सकते हैं जो यूनिक होना चाहिए। unique: true विकल्प का उपयोग करें और साथ में dropDups: true (नोट: MongoDB 3.0+ में dropDups हटा दिया गया है; इसके बजाय डुप्लिकेट्स को मैन्युअली हटाएं)। सिंटैक्स db.yourColle