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

MongoDB में 'projection' के दिए गए फील्ड्स वाले सबडॉक्यूमेंट्स को सीमित करने के लिए क्वेरी

MongoDB एग्रीगेशन में प्रोजेक्शन फील्ड्स वाले सबडॉक्यूमेंट्स फ़िल्टर करना

इसके लिए MongoDB में aggregate() का उपयोग करें।

कलेक्शन बनाना

> db.demo285.insertOne(
    { details: [
        { Name: "Chris" },
        { Name2: "Bob" },
        { Name: "Mike" }
    ] }
);
{ "acknowledged": true, "insertedId": ObjectId("5e4abffef49383b52759cbb9") }

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

> db.demo285.find();

प्रोजेक्शन फील्ड वाले सबडॉक्यूमेंट्स तक सीमित करने की क्वेरी

> db.demo285.aggregate([
    { $match: { 'details.Name': { $exists: 1 } } },
    { $unwind: "$details" },
    { $match: { 'details.Name': { $exists: 1 } } },
    { $project: { Name: "$details.Name", _id: 0 } }
])

परिणाम


व्याख्या

  1. पहला $match: केवल उन्हीं डॉक्यूमेंट्स को पास करता है जिनके details ऐरे में कम से कम एक तत्व में Name फील्ड है
  2. $unwind: details ऐरे को फैलाता है
  3. दूसरा $match: केवल उन्हीं अनविंडेड तत्वों को रखता है जिनमें Name फील्ड मौजूद है
  4. $project: केवल Name फील्ड आउटपुट करता है (details.Name से), _id छुपाता है

परिणाम विश्लेषण

  • पहला तत्व: {Name: "Chris"} - Name मौजूद है → शामिल
  • दूसरा तत्व: {Name2: "Bob"} - Name नहीं है → बाहर
  • तीसरा तत्व: {Name: "Mike"} - Name मौजूद है → शामिल

उपयोग के मामले

विभिन्न स्कीमा वाले पॉलीमॉर्फिक ऐरे से विशिष्ट संरचना वाले तत्वों को निकालना।

  1. - MongoDB में Collection में Documents की Number Limit करना

    Collection में documents की number limit करने के लिए capped: true set करें। Size भी वहीँ set करें। Capped Collection बनाना > db.createCollection( demo683, { capped: true, size: 5 ,max:4} ) { ok : 1 } > db.demo683.insertOne({Value:100}); { acknowledged : true, insertedId : ObjectId(5ea468afa7e

  1. - MongoDB क्वेरी: _id को छोड़कर सभी फील्ड्स के मान प्रदर्शित करें

    आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo590.insert([ { Name: Chris, Age: 21 }, { Name: Bob, Age: 20 }, { Name: Sam, Age: 19 } ]); BulkWriteResult({ writeErrors: [], writeConcernErrors: [], nInserted: 3, nUpserted: 0, nMatched: 0, nModified: 0, nRemoved: 0, upserted: [] }

  1. - MongoDB क्वेरी: फील्ड के रिटर्निंग वैल्यूज को लिमिट करें

    इसके लिए $slice का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo594.insertOne({ id:1, details:[ {Name:Chris,Age:21}, {Name:Bob,Age:20}, {Name:David,Age:23}, {Name:Sam,Age:22} ] }); { acknowledged : true, insertedId : ObjectId(5e9334