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

MongoDB में सामान्य फील्ड वाले दस्तावेज़ कैसे ग्रुप करें?

MongoDB में सामान्य फील्ड मान वाले दस्तावेज़ों को ग्रुप करके अन्य फील्ड की सरणी बनाने के लिए एग्रीगेशन में $group और $addToSet का उपयोग करें।

उदाहरण

सामान्य UserId वाले दस्तावेज़ बनाएं:

> db.findDocumentWithCommonFieldsDemo.insertOne({"UserId": 1, "UserName": "Carol"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdf8ebebf3115999ed51200") }
> db.findDocumentWithCommonFieldsDemo.insertOne({"UserId": 2, "UserName": "David"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdf8ebebf3115999ed51201") }
> db.findDocumentWithCommonFieldsDemo.insertOne({"UserId": 1, "UserName": "Sam"});
{ "acknowledged" : true, "insertedId" : ObjectId("5cdf8ebebf3115999ed51202") }

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

> db.findDocumentWithCommonFieldsDemo.find();
{ "_id" : ObjectId("5cdf8ebebf3115999ed51200"), "UserId" : 1, "UserName" : "Carol" }
{ "_id" : ObjectId("5cdf8ebebf3115999ed51201"), "UserId" : 2, "UserName" : "David" }
{ "_id" : ObjectId("5cdf8ebebf3115999ed51202"), "UserId" : 1, "UserName" : "Sam" }

UserId द्वारा ग्रुप करके UserName सरणी बनाएं

> db.findDocumentWithCommonFieldsDemo.aggregate({
  $group: {
    _id: "$UserId",
    "UserDetails": {$addToSet: "$UserName"}
  }
});

आउटपुट:

{ "_id" : 2, "UserDetails" : [ "David" ] }
{ "_id" : 1, "UserDetails" : [ "Sam", "Carol" ] }

व्याख्या:

  • _id: "$UserId" - UserId फील्ड द्वारा ग्रुपिंग
  • $addToSet: "$UserName" - अद्वितीय UserName मान सरणी में संग्रहीत
  • UserId=1 के दो दस्तावेज़ हैं (Carol, Sam) → एक ग्रुप में
  • UserId=2 का एक दस्तावेज़ है (David) → अलग ग्रुप

$addToSet vs $push

ऑपरेटरव्यवहार
$addToSetकेवल अद्वितीय मान, डुप्लिकेट हटाता है
$pushसभी मान (डुप्लिकेट सहित)

अधिक जटिल ग्रुपिंग

db.collection.aggregate([
  {$group: {
    _id: "$UserId",
    names: {$addToSet: "$UserName"},
    count: {$sum: 1},
    avgAge: {$avg: "$Age"}
  }}
])

उपयोग: रिपोर्टिंग, विश्लेषण, डेटा समेकन, डुप्लिकेट पहचान के लिए उपयोगी।

  1. - MongoDB में सभी दस्तावेज़ों में सरणी-आधारित फ़ील्ड्स के अद्वितीय आइटम कैसे गिनें?

    MongoDB में सरणी-आधारित फ़ील्ड्स में अद्वितीय आइटम्स को गिनने के लिए, aggregate() के साथ $group का उपयोग करें। आइए दस्तावेज़ों के साथ एक संग्रह बनाएं: > db.demo493.insertOne({SubjectName:[MySQL,MongoDB,Java]}); { acknowledged : true, insertedId : ObjectId(5e849f97b0f3fa88e22790c4) } > db.demo4

  1. - MongoDB में सरणी फील्ड के साथ काम करके सभी से मिलान कैसे करें?

    MongoDB में सभी से मिलान करने के लिए $all का उपयोग करें। $all ऑपरेटर उन डॉक्यूमेंट्स को चुनता है जहां फील्ड का मान एक सरणी है जिसमें सभी निर्दिष्ट तत्व होते हैं। आइए एक कलेक्शन बनाते हैं: > db.demo695.insertOne({ListOfValues:[100,200,500,800]}); { acknowledged : true, insertedId : ObjectId(5ea6d

  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 } }); क्वेरी