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

MongoDB में कस्टम फील्ड के साथ इंडेक्स, सॉर्ट और पेजिनेशन कैसे करें?

MongoDB में कस्टम फील्ड्स पर इंडेक्सिंग, सॉर्टिंग और पेजिनेशन को संयोजित करने के लिए, एक कंपाउंड इंडेक्स बनाएं जो सॉर्ट क्रम से मेल खाता हो, फिर sort(), skip(), limit() का उपयोग करें।

उदाहरण: नाम, आयु, देश वाले दस्तावेज़

> db.demo373.createIndex({"Name":1,"CountryName":1});
{ "createdCollectionAutomatically" : true, "numIndexesBefore" : 1, "numIndexesAfter" : 2, "ok" : 1 }
> db.demo373.insertOne({"Name":"Chris","Age":22,"CountryName":"US"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e59ffde2ae06a1609a00aff") }
> db.demo373.insertOne({"Name":"David","Age":21,"CountryName":"AUS"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e59ffe82ae06a1609a00b00") }
> db.demo373.insertOne({"Name":"Bob","Age":23,"CountryName":"UK"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e59fff42ae06a1609a00b01") }
> db.demo373.insertOne({"Name":"John","Age":21,"CountryName":"US"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e59ffff2ae06a1609a00b02") }
> db.demo373.insertOne({"Name":"Carol","Age":23,"CountryName":"AUS"});
{ "acknowledged" : true, "insertedId" : ObjectId("5e5a00082ae06a1609a00b03") }

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

> db.demo373.find();

आउटपुट: पांच दस्तावेज़।

क्वेरी: Name, Age द्वारा सॉर्ट करें, पेज 2 (skip 2, limit 4)

> db.demo373.find().sort({"Name":1, "Age":1}).limit(4).skip(2);

आउटपुट:

{ "_id" : ObjectId("5e59ffde2ae06a1609a00aff"), "Name" : "Chris", "Age" : 22, "CountryName" : "US" }
{ "_id" : ObjectId("5e59ffe82ae06a1609a00b00"), "Name" : "David", "Age" : 21, "CountryName" : "AUS" }
{ "_id" : ObjectId("5e59ffff2ae06a1609a00b02"), "Name" : "John", "Age" : 21, "CountryName" : "US" }

मुख्य बिंदु

  • कंपाउंड इंडेक्स: {Name:1, CountryName:1} सॉर्ट {Name:1, Age:1} के लिए पूरी तरह से समर्थन नहीं करता क्योंकि Age इंडेक्स में नहीं है। इष्टतम इंडेक्स: {Name:1, Age:1} या {Name:1, Age:1, CountryName:1}।
  • इंडेक्स क्रम मायने रखता है: इंडेक्स फील्ड क्रम सॉर्ट क्रम से मेल खाना चाहिए (या उल्टा)।
  • पेजिनेशन: skip() + limit() काम करता है लेकिन बड़े skip के लिए धीमा होता है। गहरी पेजिनेशन के लिए रेंज-आधारित पेजिनेशन (कर्सर/सीक मेथड) पर विचार करें।
  • कवर क्वेरी: केवल इंडेक्स फील्ड्स प्रोजेक्ट करें ताकि दस्तावेज़ लुकअप से बचा जा सके।

सही इंडेक्स के साथ सुधारित उदाहरण

> db.demo373.createIndex({"Name":1, "Age":1});
> db.demo373.find({},{_id:0,Name:1,Age:1,CountryName:1}).sort({"Name":1,"Age":1}).limit(4).skip(2);

यह इंडेक्स-ओनली स्कैन (कवर्ड क्वेरी) का उपयोग करेगा।

  1. - MongoDB में $project का उपयोग करके सरणी में केवल विशिष्ट फील्ड प्रदर्शित करें और अन्य फील्ड्स को अनदेखा करें

    विशिष्ट फील्ड प्रदर्शित करने के लिए $project के साथ $unwind का उपयोग करें। किसी फील्ड को अनदेखा करने के लिए उसे 0 पर सेट करें। आइए एक कलेक्शन बनाते हैं: > db.demo731.insertOne({ ProductInformation: [ { ProductId:Product-1, ProductPrice:80 }, { ProductId:Product-2, ProductPrice:45 }, { ProductId:

  1. - MySQL में कस्टम क्रम से फील्ड मान द्वारा सॉर्ट कैसे करें?

    FIELD() फ़ंक्शन से कस्टम सॉर्ट क्रम परिभाषित करें मानक ASC/DESC के बजाय विशिष्ट मानों के कस्टम क्रम में पंक्तियों को सॉर्ट करने के लिए ORDER BY FIELD() का उपयोग करें। टेबल और डेटा INSERT INTO DemoTable VALUES(100), (110), (90), (70), (120), (140); मूल डेटा SELECT * FROM DemoTable; +----------

  1. - Java का उपयोग करके MongoDB में इंडेक्स कैसे बनाएं?

    MongoDB में इंडेक्स बनाने के लिए, आपको createIndex() मेथड का उपयोग करना होगा। सिंटैक्स db.COLLECTION_NAME.createIndex({KEY:1}) जहां key उस फ़ाइल का नाम है जिस पर आप इंडेक्स बनाना चाहते हैं और 1 आरोही क्रम के लिए है। अवरोही क्रम में इंडेक्स बनाने के लिए आपको -1 का उपयोग करना होगा। Java में, आप creat