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

MongoDB में शीर्ष N पंक्तियों को क्वेरी करना

एग्रीगेशन फ्रेमवर्क के साथ शीर्ष N परिणाम

MongoDB में "शीर्ष N" पंक्तियों को प्राप्त करने के लिए (उदाहरण के लिए, उच्चतम स्कोर वाले शीर्ष 5 छात्र), एग्रीगेशन पाइपलाइन का उपयोग करें जिसमें $sort, $limit, और वैकल्पिक रूप से $match चरण शामिल हों।

उदाहरण: डेटा डालना

> db.topNRowsDemo.insertOne({"StudentName":"Larry","Score":78});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca26eee6304881c5ce84b91") }
> db.topNRowsDemo.insertOne({"StudentName":"Chris","Score":45});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca26ef66304881c5ce84b92") }
> db.topNRowsDemo.insertOne({"StudentName":"Mike","Score":65});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca26efe6304881c5ce84b93") }
> db.topNRowsDemo.insertOne({"StudentName":"Adam","Score":55});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca26f066304881c5ce84b94") }
> db.topNRowsDemo.insertOne({"StudentName":"John","Score":86});
{ "acknowledged" : true, "insertedId" : ObjectId("5ca26f0f6304881c5ce84b95") }

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

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

आउटपुट:

{ "_id" : ObjectId("5ca26eee6304881c5ce84b91"), "StudentName" : "Larry", "Score" : 78 }
{ "_id" : ObjectId("5ca26ef66304881c5ce84b92"), "StudentName" : "Chris", "Score" : 45 }
{ "_id" : ObjectId("5ca26efe6304881c5ce84b93"), "StudentName" : "Mike", "Score" : 65 }
{ "_id" : ObjectId("5ca26f066304881c5ce84b94"), "StudentName" : "Adam", "Score" : 55 }
{ "_id" : ObjectId("5ca26f0f6304881c5ce84b95"), "StudentName" : "John", "Score" : 86 }

शीर्ष N क्वेरी (उदाहरण: Score > 65 वाले शीर्ष 5, नाम के अनुसार क्रमबद्ध)

> db.topNRowsDemo.aggregate([
...   {$sort: {StudentName: 1}},
...   {$limit: 5},
...   {$match: {Score: {$gt: 65}}}
... ]).pretty();

आउटपुट:

{ "_id" : ObjectId("5ca26f0f6304881c5ce84b95"), "StudentName" : "John", "Score" : 86 }
{ "_id" : ObjectId("5ca26eee6304881c5ce84b91"), "StudentName" : "Larry", "Score" : 78 }

सही क्रम: आमतौर पर, पहले $match (फ़िल्टर), फिर $sort (क्रमबद्ध), फिर $limit (सीमा) लागू करना प्रदर्शन के लिए बेहतर होता है। उपरोक्त उदाहरण में क्रम अलग है, इसलिए परिणाम अपेक्षा से भिन्न हो सकते हैं। मानक पैटर्न:

db.collection.aggregate([
  { $match: { Score: { $gt: 65 } } },
  { $sort: { Score: -1 } },  // उच्चतम स्कोर पहले
  { $limit: 5 }
])
  1. - MongoDB क्वेरी में विशिष्ट कॉलम चुनना

    MongoDB में प्रोजेक्शन का उपयोग करके विशिष्ट फील्ड्स चुनना MongoDB में क्वेरी परिणामों में केवल वांछित फील्ड्स शामिल करने के लिए प्रोजेक्शन ऑब्जेक्ट (find का दूसरा पैरामीटर) में फील्ड को 1 (शामिल करें) या 0 (बहिष्कृत करें) सेट करें। उदाहरण: संग्रह और दस्तावेज़ बनाना > db.demo415.insertOne({Clien

  1. - MongoDB में Sub-documents पर Find Query Execute करना

    Sub-documents के लिए dot notation का उपयोग करें। आइए पहले documents के साथ एक collection बनाते हैं: > db.demo537.insertOne({details:{SubjectName:MongoDB}}); { acknowledged : true, insertedId : ObjectId(5e8c8a10ef4dcbee04fbbc05) } > db.demo537.insertOne({details:{SubjectName:MySQL}}); { acknowl

  1. - MongoDB में SQL LIKE के समान क्वेरी कैसे करें?

    MongoDB में LIKE के समान कार्यक्षमता के लिए find() के साथ रेगुलर एक्सप्रेशन (//) का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo686.insertOne({FirstName:Robert}); { acknowledged : true, insertedId : ObjectId(5ea55182a7e81adc6a0b395c) } > db.demo686.insertOne({FirstName:John}); { acknowledg