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

MongoDB में $group और $addToSet से मल्टीपल फ़ील्ड पर डिस्टिंक्ट करें

MongoDB एग्रीगेशन में $group से मल्टीपल फ़ील्ड पर डिस्टिंक्ट

एक से अधिक फ़ील्ड के यूनिक वैल्यू सेट प्राप्त करने के लिए $group स्टेज में $addToSet एक्यूमुलेटर का उपयोग करें।

कलेक्शन बनाएं और डॉक्यूमेंट इन्सर्ट करें

> db.distinctOnMultipleFieldsDemo.insertOne({"StudentFirstName":"Chris","StudentAge":21,"StudentCountryName":"US"});
{ "acknowledged": true, "insertedId": ObjectId("5cd2e518b64f4b851c3a13d7") }
> db.distinctOnMultipleFieldsDemo.insertOne({"StudentFirstName":"Robert","StudentAge":21,"StudentCountryName":"AUS"});
{ "acknowledged": true, "insertedId": ObjectId("5cd2e518b64f4b851c3a13d8") }
> db.distinctOnMultipleFieldsDemo.insertOne({"StudentFirstName":"Chris","StudentAge":22,"StudentCountryName":"UK"});
{ "acknowledged": true, "insertedId": ObjectId("5cd2e518b64f4b851c3a13d9") }
> db.distinctOnMultipleFieldsDemo.insertOne({"StudentFirstName":"David","StudentAge":24,"StudentCountryName":"AUS"});
{ "acknowledged": true, "insertedId": ObjectId("5cd2e518b64f4b851c3a13da") }

सभी डॉक्यूमेंट देखें

> db.distinctOnMultipleFieldsDemo.find().pretty();
{ "_id": ObjectId("5cd2e518b64f4b851c3a13d7"), "StudentFirstName": "Chris", "StudentAge": 21, "StudentCountryName": "US" }
{ "_id": ObjectId("5cd2e518b64f4b851c3a13d8"), "StudentFirstName": "Robert", "StudentAge": 21, "StudentCountryName": "AUS" }
{ "_id": ObjectId("5cd2e518b64f4b851c3a13d9"), "StudentFirstName": "Chris", "StudentAge": 22, "StudentCountryName": "UK" }
{ "_id": ObjectId("5cd2e518b64f4b851c3a13da"), "StudentFirstName": "David", "StudentAge": 24, "StudentCountryName": "AUS" }

मल्टीपल फ़ील्ड पर डिस्टिंक्ट एग्रीगेशन

> db.distinctOnMultipleFieldsDemo.aggregate([
  {
    $group: {
      _id: 0,
      StudentFirstName: {$addToSet: "$StudentFirstName"},
      StudentAge: {$addToSet: "$StudentAge"},
      StudentCountryName: {$addToSet: "$StudentCountryName"}
    }
  }
]);
{ "_id": 0, "StudentFirstName": ["David", "Robert", "Chris"], "StudentAge": [24, 22, 21], "StudentCountryName": ["UK", "AUS", "US"] }

व्याख्या

  • _id: 0 - सभी डॉक्यूमेंट को एक ग्रुप में रखता है
  • $addToSet - केवल यूनिक वैल्यू सरणी में जोड़ता है (डुप्लिकेट इग्नोर)
  • Chris दो बार आया लेकिन सरणी में एक बार
  • उम्र 21 दो बार आई लेकिन सरणी में एक बार

अन्य उपयोगी पैटर्न

// कंबाइंड यूनिक कॉम्बिनेशन (कंपाउंड डिस्टिंक्ट)
db.collection.aggregate([
  {$group: {_id: {name: "$StudentFirstName", age: "$StudentAge"}}},
  {$project: {_id: 0, name: "$_id.name", age: "$_id.age"}}
])
  1. - MongoDB क्वेरी: एकाधिक फ़ील्ड के अस्तित्व की जांच करें

    एकाधिक फ़ील्ड के अस्तित्व की जांच के लिए $exists के साथ $and ऑपरेटर का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo475.insertOne({"StudentFirstName":"Chris","StudentAge":23});{    "acknowledged" : true,    "inserte

  1. - MongoDB में शर्त से मेल खाने वाले कई सब-डॉक्यूमेंट्स से फ़ील्ड कैसे प्राप्त करें?

    कई सब-डॉक्यूमेंट्स से फ़ील्ड प्राप्त करने के लिए, $unwind के साथ MongoDB एग्रीगेट का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo671.insertOne( { details : [ { id : 1 }, { CountryName:US, details1 : [

  1. - MongoDB एग्रीगेशन में मल्टीपल फ़ील्ड्स द्वारा काउंट करना

    एक ही पाइपलाइन में कई फ़ील्ड्स पर काउंट करने के लिए $facet का उपयोग करें। डेमो डेटा db.demo721.insertOne({ details1: { id:101 }, details2: { id:101 }, details3: { id:101 } }); db.demo721.insertOne({ details1: { id:101 }, details2: { id:102 }, details3: { id:102 } }); क्वेरी