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

MongoDB में प्रति ग्रुप अधिकतम एट्रिब्यूट वाले डॉक्यूमेंट कैसे प्राप्त करें

MongoDB में कलेक्शन से प्रति ग्रुप अधिकतम एट्रिब्यूट वाले डॉक्यूमेंट प्राप्त करने के लिए $sort ऑपरेटर के साथ $group स्टेटमेंट का उपयोग करें।

उदाहरण से समझें

एक कलेक्शन बनाकर डॉक्यूमेंट इन्सर्ट करते हैं:

> db.maxAttributePerGroup.insertOne({"StudentFirstName": "John", "StudentLastName": "Smith", "StudentAge": 29, "StudentId": 10});
> db.maxAttributePerGroup.insertOne({"StudentFirstName": "Carol", "StudentLastName": "Taylor", "StudentAge": 19, "StudentId": 10});
> db.maxAttributePerGroup.insertOne({"StudentFirstName": "Adam", "StudentLastName": "Smith", "StudentAge": 34, "StudentId": 20});
> db.maxAttributePerGroup.insertOne({"StudentFirstName": "Bob", "StudentLastName": "Taylor", "StudentAge": 58, "StudentId": 20});

सभी डॉक्यूमेंट देखने के लिए:

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

आउटपुट:

{ "_id": ..., "StudentFirstName": "John", "StudentLastName": "Smith", "StudentAge": 29, "StudentId": 10 }
{ "_id": ..., "StudentFirstName": "Carol", "StudentLastName": "Taylor", "StudentAge": 19, "StudentId": 10 }
{ "_id": ..., "StudentFirstName": "Adam", "StudentLastName": "Smith", "StudentAge": 34, "StudentId": 20 }
{ "_id": ..., "StudentFirstName": "Bob", "StudentLastName": "Taylor", "StudentAge": 58, "StudentId": 20 }

अब प्रति StudentId ग्रुप में अधिकतम StudentAge वाले डॉक्यूमेंट प्राप्त करने के लिए:

> db.maxAttributePerGroup.aggregate([
  {$sort: {"StudentId": 1, "StudentAge": -1}},
  {$group: {
    "_id": "$StudentId",
    "StudentAge": {$first: "$StudentAge"},
    "StudentFirstName": {$first: "$StudentFirstName"},
    "StudentLastName": {$first: "$StudentLastName"}
  }}
]).pretty();

आउटपुट:

{ "_id": 20, "StudentAge": 58, "StudentFirstName": "Bob", "StudentLastName": "Taylor" }
{ "_id": 10, "StudentAge": 29, "StudentFirstName": "John", "StudentLastName": "Smith" }

$sort में StudentAge: -1 से पहले सबसे बड़ी उम्र आती है, फिर $group में $first से वही रिकॉर्ड चुना जाता है।

  1. - MongoDB एग्रीगेशन: सबसे कम मार्क्स वाले दो दस्तावेज प्राप्त करें

    मार्क्स की सॉर्ट की गई सूची प्राप्त करने के लिए $sort का उपयोग करें। केवल दो दस्तावेज प्रदर्शित करने के लिए जिनमें सबसे कम मार्क्स हैं, $limit: 2 का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo709.insertOne({Name:John,Marks:75}); { acknowledged : true, insertedId : ObjectId(

  1. - MongoDB क्वेरी: $or में मल्टीपल कंडीशन्स सेट करके दस्तावेज प्राप्त करें

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo711.insertOne({Name:John,Marks:75,Age:21,status:Active}); { acknowledged : true, insertedId : ObjectId(5ea85c215d33e20ed1097b7e) } > db.demo711.insertOne({Name:Chris,Marks:55,Age:22,status:Active}); { acknowledged : true, insertedId : Objec

  1. - MongoDB क्वेरी: फॉर्मूला के साथ कलेक्शन में प्रत्येक डॉक्यूमेंट के प्रत्येक फील्ड को अपडेट करें

    कलेक्शन में प्रत्येक डॉक्यूमेंट के प्रत्येक फील्ड को फॉर्मूला के साथ अपडेट करने के लिए MongoDB update() का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo749.insertOne({details:[{ id:1,a:10},{id:2,a:5},{id:3,a:20}]}); { acknowledged : true, insertedId : ObjectId(5eae6fb0a930c785c834e565) } find(