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

MongoDB में विशिष्ट सबडॉक्यूमेंट कैसे चुनें?

MongoDB में सरणी के अंदर विशिष्ट सबडॉक्यूमेंट को प्रोजेक्ट करने के लिए, क्वेरी फिल्टर के साथ $ (स्थिति प्रोजेक्शन ऑपरेटर) का उपयोग करें।

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

> db.demo37.insertOne({"Details":[{"Name":"Chris","Age":21},{"Name":"David","Age":23}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e176635cfb11e5c34d898d7") }
> db.demo37.insertOne({"Details":[{"Name":"Sam","Age":23},{"Name":"Robert","Age":25}]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e17664acfb11e5c34d898d8") }

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

> db.demo37.find();

आउटपुट: प्रत्येक में दो सबडॉक्यूमेंट्स वाली सरणी के साथ दो दस्तावेज़।

क्वेरी: Name="Sam" वाले सबडॉक्यूमेंट को प्रोजेक्ट करें

> db.demo37.find(
    { 'Details.Name' : 'Sam' },
    { _id: 0, 'Details.$.Name': 1 }
);

आउटपुट:

{ "Details" : [ { "Name" : "Sam", "Age" : 23 } ] }

व्याख्या

  • फिल्टर {'Details.Name':'Sam'} दस्तावेज़ से मेल खाता है और सरणी में पहला मिलान वाला तत्व पहचानता है।
  • प्रोजेक्शन {_id:0, 'Details.$.Name':1} _id को बाहर करता है और $ के माध्यम से केवल मिलान वाले सरणी तत्व के Name को शामिल करता है।
  • नोट: प्रोजेक्शन में $ केवल पहले मिलान वाले तत्व को लौटाता है।

सीमाएं

  • केवल एक सरणी फील्ड प्रति क्वेरी $ प्रोजेक्शन का उपयोग कर सकती है।
  • एकाधिक/सभी मिलान वाले तत्वों के लिए, $elemMatch प्रोजेक्शन या एग्रीगेशन ($unwind + $match) का उपयोग करें।

वैकल्पिक: $elemMatch प्रोजेक्शन (एकाधिक फील्ड लौटाता है)

> db.demo37.find(
    { "Details.Name": "Sam" },
    { _id: 0, Details: { $elemMatch: { "Name": "Sam" } } }
);

मिलान वाले सबडॉक्यूमेंट के सभी फील्ड्स लौटाता है (सिर्फ Name नहीं)।

  1. - MongoDB में विशिष्ट फ़ील्ड न रखने वाले दस्तावेज़ ढूंढना

    किसी फ़ील्ड की अनुपस्थिति जांचने के लिए $exists: false का उपयोग करें। डेमो डेटा db.demo612.insertOne({id:1,Info:[{Name:Chris,Age:21},{Name:David}]}); क्वेरी db.demo612.aggregate([ {$unwind: $Info}, {$match: {Info.Age:{$exists: false}}}, {$project: {Info.Name: 1}} ]) परिणाम { _id : Obj

  1. - MySQL में विशिष्ट पंक्तियों का चयन कैसे करें?

    विशिष्ट पंक्तियों का चयन करने के लिए, MySQL में FIND_IN_SET() फ़ंक्शन का उपयोग करें। आइए पहले एक टेबल बनाते हैं: CREATE TABLE DemoTable ( ListOfValues VARCHAR(200) ); टेबल में कुछ रिकॉर्ड डालें: INSERT INTO DemoTable VALUES(2,567,98,C); टेबल से सभी रिकॉर्ड प्रदर्शित करें: SELECT * FROM DemoTa

  1. - MySQL में सभी डुप्लिकेट रिकॉर्ड्स कैसे चुनें? सबक्वेरी का उपयोग

    डुप्लिकेट चुनने के लिए सबक्वेरी का उपयोग करें। टेबल बनाएं mysql> create table DemoTable ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Name varchar(100) -> ); Query OK, 0 rows affected (0.87 sec) रिकॉर्ड्स डालें mysql> insert into DemoTable(Name) values(John); Query