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

MongoDB एग्रीगेशन फ्रेमवर्क में सरणी की लंबाई के आधार पर सॉर्ट कैसे करें?

MongoDB में दस्तावेज़ों को सरणी फील्ड की लंबाई के आधार पर सॉर्ट करने के लिए, एग्रीगेशन पाइपलाइन का उपयोग करें: $unwind → $group साथ $sum → $sort।

उदाहरण: छात्र सूची वाले दस्तावेज़

> db.demo33.insertOne({"ListOfStudent":["Chris","Bob"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e17556ccfb11e5c34d898ca") }
> db.demo33.insertOne({"ListOfStudent":["David","Adam","Mike"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e17557acfb11e5c34d898cb") }
> db.demo33.insertOne({"ListOfStudent":["Carol","Sam","John","Robert"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e1755a3cfb11e5c34d898cc") }

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

> db.demo33.find();

आउटपुट: 2, 3, और 4 तत्वों वाली सरणी के साथ तीन दस्तावेज़।

एग्रीगेशन: सरणी लंबाई द्वारा सॉर्ट (अवरोही)

> db.demo33.aggregate(
    { $unwind: "$ListOfStudent" },
    { $group: { _id: '$_id', ct: { $sum: 1 } } },
    { $sort: { ct: -1 } }
);

परिणाम

{ "_id" : ObjectId("5e1755a3cfb11e5c34d898cc"), "ct" : 4 }
{ "_id" : ObjectId("5e17557acfb11e5c34d898cb"), "ct" : 3 }
{ "_id" : ObjectId("5e17556ccfb11e5c34d898ca"), "ct" : 2 }

चरण व्याख्या

  1. $unwind: प्रत्येक सरणी तत्व के लिए एक दस्तावेज़ बनाता है।
  2. $group + $sum: मूल _id द्वारा पुनः समूहित करता है और तत्वों की गणना करता है (ct)।
  3. $sort: गणना (ct: -1 अवरोही के लिए) द्वारा सॉर्ट करता है।

बेहतर विकल्प: $size (MongoDB 3.2+)

$unwind/$group के बजाय, सीधे $size का उपयोग करें:

> db.demo33.aggregate([
    { $project: { _id: 1, ListOfStudent: 1, len: { $size: "$ListOfStudent" } } },
    { $sort: { len: -1 } }
]);

यह अधिक कुशल है और सरणी संरचना को संरक्षित करता है।

नोट

  • $size केवल प्रोजेक्शन/मैच में काम करता है, सीधे $sort में नहीं; इसलिए प्रोजेक्ट चरण।
  • बहुत बड़ी सरणी के लिए, प्री-कम्प्यूटेड लंबाई फील्ड को इंडेक्स करने पर विचार करें।
  1. - MongoDB कलेक्शन को ऐरे वैल्यू द्वारा सॉर्ट करें

    MongoDB कलेक्शन को ऐरे वैल्यू द्वारा सॉर्ट करने के लिए, $sort के साथ aggregate() का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo577.insertOne({ student: { details: [ { Name:Chris, Score:45 }, { Name:Bob, Score:33 }, { Name:Davi

  1. - MongoDB क्वेरी: एग्रीगेशन में ऐरे एलिमेंट का औसत प्राप्त करें

    ऐरे एलिमेंट्स का औसत प्राप्त करने के लिए, $avg का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo584.insertOne({Marks:[75,50,85,60,80]}); { acknowledged : true, insertedId : ObjectId(5e91d827fd2d90c177b5bcc2) } find() मेथड की मदद से कलेक्शन के सभी दस्तावेज प्रदर्शित करें: >

  1. - MongoDB एग्रीगेशन: ऐरे के सबसेट एलिमेंट्स को जोड़ें

    ऐरे के सबसेट एलिमेंट्स को एक साथ जोड़ने के लिए, $first के साथ $sum का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo610.insertOne({Values:[10,20,30,40,50]}); { acknowledged : true, insertedId : ObjectId(5e9747b8f57d0dc0b182d62e) } find() मेथड की मदद से कलेक्शन के सभी दस्तावेज