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

MongoDB में किसी अन्य फील्ड द्वारा ग्रुप करके मान कैसे खोजें?

MongoDB में किसी फील्ड द्वारा दस्तावेज़ों को ग्रुप करने और दूसरे फील्ड के मान एकत्र करने के लिए, $group के साथ $addToSet/$push और $reduce/$concatArrays का उपयोग करें ताकि सरणी फ़्लैट हो सके।

उदाहरण: शौक और देश वाले दस्तावेज़

> db.demo374.insertOne({
    "Name" : "Chris",
    "HobbyDetails" : [ "Reading Book", "Playing Football" ],
    "CountryName" : "US"
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5a04402ae06a1609a00b04") }
> db.demo374.insertOne({
    "Name" : "Chris",
    "HobbyDetails" : [ "Browsing Internet", "Playing Football" ],
    "CountryName" : "US"
});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5a04402ae06a1609a00b05") }

दस्तावेज़ देखना

> db.demo374.find();

आउटपुट: समान नाम/देश, अलग-अलग शौक सरणी वाले दो दस्तावेज़।

एग्रीगेशन: नाम द्वारा ग्रुप करें और शौक सरणी संयोजित करें

> db.demo374.aggregate([
    { $match: { "CountryName": "US" } },
    { $group: {
        _id: "$Name",
        HobbyDetails: { $addToSet: "$HobbyDetails" }
    }},
    { $project: {
        _id: 0,
        Name: "$_id",
        HobbyDetails: {
            $reduce: {
                input: "$HobbyDetails",
                initialValue: [],
                in: { $concatArrays: [ "$$value", "$$this" ] }
            }
        }
    }}
]).pretty()

परिणाम

{ "Name" : "Chris", "HobbyDetails" : [ "Browsing Internet", "Playing Football", "Reading Book", "Playing Football" ] }

चरण व्याख्या

  1. $match: देश द्वारा फ़िल्टर।
  2. $group + $addToSet: नाम द्वारा ग्रुप करता है, अद्वितीय शौक सरणी एकत्र करता है (सरणी की सरणी)।
  3. $project + $reduce + $concatArrays: सरणी की सरणी को एकल सरणी में फ़्लैट करता है।

नोट

  • $addToSet सरणी स्तर पर डुप्लिकेट हटाता है; तत्व स्तर पर डुप्लिकेट (Playing Football दो बार) बने रहते हैं। तत्व-स्तरीय विशिष्टता के लिए, $unwind → $group साथ $addToSet का उपयोग करें।
  • MongoDB 4.4+ $accumulator या $function का उपयोग कस्टम मर्ज के लिए कर सकता है।
  1. - MongoDB में ऐरे को दूसरे फील्ड के साथ अपडेट करने के लिए क्वेरी

    MongoDB में $push के साथ ऐरे में तत्व जोड़ना ऐरे को दूसरे फील्ड के साथ अपडेट करने के लिए $push का उपयोग करें। कलेक्शन बनाना > db.demo283.insertOne({Name:Chris,Status:[Active,Inactive]}); { acknowledged: true, insertedId: ObjectId(5e4ab97ddd099650a5401a75) } अपडेट से पहले > db.demo283.find();

  1. - MongoDB में ऑब्जेक्ट के फील्ड ऐरे मानों को क्वेरी करना

    MongoDB में ऑब्जेक्ट के फील्ड ऐरे मानों को क्वेरी करना arrayFieldName के साथ मान का उपयोग करके ऑब्जेक्ट के फील्ड ऐरे मान को क्वेरी करें। कलेक्शन बनाना > db.demo295.insertOne({status:[Active,Inactive]}); { acknowledged: true, insertedId: ObjectId(5e4d4ea65d93261e4bc9ea39) } > db.demo295.insert

  1. - MongoDB में true/false मानों के आधार पर क्वेरी कैसे करें?

    MongoDB में बूलियन फील्ड के आधार पर दस्तावेज़ फ़िल्टर करने के लिए, सीधे क्वेरी में true या false का उपयोग करें। नेस्टेड सरणी में फील्ड के अस्तित्व की जांच के लिए, डॉट नोटेशन के साथ $exists का उपयोग करें। उदाहरण: नेस्टेड विवरण और isMarried फ्लैग > db.demo367.insertOne({ Id : 102, details