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

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

MongoDB एग्रीगेशन में $filter: एम्बेडेड सरणी पर रेंज क्वेरी

$filter ऑपरेटर सरणी के तत्वों को शर्त के आधार पर फ़िल्टर करता है। $match (दस्तावेज़ स्तर) और $addFields (सरणी आकार बदलना) के साथ संयोजित करके जटिल रेंज क्वेरीज़ करें।

नमूना डेटा

> db.demo346.insertOne({_id: 101, userDetails: [{UserName: "Chris", Score: 78}, {UserName: "David", Score: 68}, {UserName: "Bob", Score: 88}]});
{ "acknowledged": true, "insertedId": 101 }
> db.demo346.insertOne({_id: 102, userDetails: [{UserName: "Mike", Score: 92}, {UserName: "Sam", Score: 62}, {UserName: "Carol", Score: 97}]});
{ "acknowledged": true, "insertedId": 102 }

एग्रीगेशन: Score 80-99 वाले उपयोगकर्ता रखें

> db.demo346.aggregate([
    {$match: {$expr: {$gte: [{$size: {$ifNull: ["$userDetails", []]}}, 1]}}},
    {$addFields: {
        userDetails: {$filter: {
            input: {$ifNull: ["$userDetails", []]},
            cond: {$and: [{$gte: ["$$this.Score", 80]}, {$lte: ["$$this.Score", 99]}]}
        }}
    }}
]);

परिणाम

{ "_id": 101, "userDetails": [{"UserName": "Bob", "Score": 88}] }
{ "_id": 102, "userDetails": [{"UserName": "Mike", "Score": 92}, {"UserName": "Carol", "Score": 97}] }

पहला $match खाली सरणी वाले दस्तावेज़ों को बाहर करता है ($ifNull सुरक्षा)। $filter प्रत्येक userDetails तत्व पर $$this के माध्यम से रेंज शर्त लागू करता है। केवल 80-99 रेंज वाले स्कोर रखे जाते हैं।

  1. - MongoDB में एम्बेडेड दस्तावेजों के ऐरे को क्वेरी करें और नया जोड़ें

    इसके लिए, अपडेट के साथ $push का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo573.insertOne( { _id: 101, SearchInformation: [ { Site: Facebook.com, NumberOfHits: 100 }, { Site: Twitter.com, NumberOfHits: 300 } ] } ); { ac

  1. - MongoDB में एम्बेडेड डॉक्यूमेंट की सरणी पर फ़िल्टर क्वेरी कैसे करें?

    इसके लिए MongoDB में aggregate() का उपयोग करें। आइए 3 स्तरों के नेस्टेड डॉक्यूमेंट्स के साथ एक कलेक्शन बनाते हैं: > db.demo736.insertOne( { _id: 101, details1: [ { details2: [ { details3: { Name: John } } ] } ] } ); { acknowledged : true, insertedId : 101 } > db.demo736.insertOne( { _id: 102,

  1. - MongoDB में विशिष्ट नेस्टेड डॉक्यूमेंट्स के लिए ऑब्जेक्ट्स की सरणी पर क्वेरी कैसे करें?

    ऑब्जेक्ट्स की सरणी के लिए नेस्टेड डॉक्यूमेंट्स पर क्वेरी करने के लिए find() का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo763.insertOne( { _id:1, CountryName:US, studentInformation: [ { StudentName:Chris }, { StudentName:David, StudentAge:22 } ] } ); { acknowledged : true, insertedId : 1 } f