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

MongoDB में अज्ञात फील्ड नामों वाले सबडॉक्यूमेंट द्वारा क्वेरी करते समय इंडेक्स का उपयोग कैसे करें?

MongoDB में डायनामिक फील्ड नामों वाले सबडॉक्यूमेंट्स के लिए इंडेक्सिंग

हां, आप इसे "properties.k" के लिए कुंजी और "properties.v" के लिए मान इंडेक्स करके प्राप्त कर सकते हैं। यही ensureIndex() में लागू किया जाता है।

उदाहरण कलेक्शन बनाना

> db.demo274.insertOne({"details":[
    {StudentFirstName:"Chris",StudentLastName:"Brown"},
    {StudentFirstName:"David",StudentLastName:"Miller"},
    {StudentFirstName:"John",StudentLastName:"Smith"},
    {StudentFirstName:"John",StudentLastName:"Doe"}
]});
{ "acknowledged": true, "insertedId": ObjectId("5e48de35dd099650a5401a42") }

सभी डॉक्यूमेंट्स

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

सबडॉक्यूमेंट फील्ड्स पर इंडेक्स बनाना

> db.demo274.ensureIndex({"details.StudentFirstName": 1, "details.StudentLastName": 1});

परिणाम


व्याख्या

  • डॉट नोटेशन इंडेक्स: {"details.StudentFirstName": 1, "details.StudentLastName": 1}
  • यह इंडेक्स details ऐरे के प्रत्येक तत्व के StudentFirstName और StudentLastName के लिए एंट्री बनाता है
  • मल्टी-की इंडेक्स: ऐरे फील्ड पर इंडेक्स स्वचालित रूप से मल्टी-की बन जाता है
  • क्वेरी जैसे db.demo274.find({"details.StudentFirstName": "John"}) इस इंडेक्स का उपयोग करेगी

डायनामिक/अज्ञात फील्ड नामों के लिए

यदि फील्ड नाम पहले से ज्ञात नहीं हैं (डायनामिक स्कीमा), तो "एट्रिब्यूट पैटर्न" का उपयोग करें:

यह पैटर्न स्कीमा-लेस डायनामिक एट्रिब्यूट्स के लिए कुशल इंडेक्सिंग सक्षम करता है।

  1. - MongoDB aggregate से डुप्लिकेट नामों के संबंधित फील्ड मानों की गिनती प्राप्त करें

    उदाहरण देखते हैं और डॉक्यूमेंट्स के साथ एक कलेक्शन बनाते हैं: > db.demo558.insertOne( ... { _id : 100, CountryCode:101, details: [ ... { Name:Chris, Subject:MySQL }, ... { Name:Chris, Subject:MongoDB }, ... { Name:Chris, Subject:Java }, ... { Name:Bob, Subject:Python }, ... { Name:Bob, Subject:J

  1. - MongoDB में _id फील्ड छिपाएं

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo575.insertOne({id:101,Information:{Name:Chris,Age:21}}); { acknowledged : true, insertedId : ObjectId(5e916a55581e9acd78b427f7) } > db.demo575.insertOne({id:102,Information:{Name:David,Age:20}}); { acknowledged : true, insertedId : ObjectId

  1. - MongoDB 4 में दस्तावेजों को सॉर्ट करें और केवल एक फील्ड प्रदर्शित करें

    MongoDB 4 में दस्तावेजों को सॉर्ट करने के लिए sort() का उपयोग करें। केवल एक फील्ड दिखाने के लिए, जो सॉर्ट की गई है, उसे 1 पर सेट करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo611.insertOne({Name:Chris}); { acknowledged : true, insertedId : ObjectId(5e987110f6b89257f5584d83) } > d