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

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

MongoDB एग्रीगेशन में गहरी नेस्टेड सरणी फ़िल्टरिंग

गहराई से नेस्टेड सरणी संरचनाओं से केवल विशिष्ट मिलान वाले तत्वों को निकालने के लिए, $project स्टेज के भीतर $filter और $map का संयोजन उपयोग करें।

नमूना डेटा: 3-स्तरीय नेस्टिंग

> db.demo342.insertOne({
    "Id": "101",
    "details1": {
        "details2": [{
            "details3": [
                {"Name": "Mike", "CountryName": "US"},
                {"Name": "David", "CountryName": "AUS"},
                {"Name": "Bob", "CountryName": "UK"}
            ]
        }]
    }
});
{ "acknowledged": true, "insertedId": ObjectId("5e53ef99f8647eb59e5620a9") }

एग्रीगेशन: केवल Name="Bob" वाले details3 तत्व रखें

> db.demo342.aggregate([
    {
        $project: {
            details1: {
                details2: {
                    $filter: {
                        input: {
                            $map: {
                                input: "$details1.details2",
                                in: {
                                    details3: {
                                        $filter: {
                                            input: "$$this.details3",
                                            cond: {$eq: ["$$this.Name", "Bob"]}
                                        }
                                    }
                                }
                            }
                        },
                        cond: {$ne: ["$$this.details3", []]}
                    }
                }
            }
        }
    }
]);

परिणाम

{ "details1": { "details2": [ { "details3": [ { "Name": "Bob", "CountryName": "UK" } ] } ] } }

पाइपलाइन: 1) $map बाहरी सरणी पर पुनरावृत्त करता है, 2) आंतरिक $filter details3 सरणी को फ़िल्टर करता है, 3) बाहरी $filter खाली details3 सरणी वाले तत्वों को हटा देता है। यह जटिल नेस्टेड संरचनाओं को आकार देने का उन्नत पैटर्न है।

  1. - MongoDB दस्तावेज़ों में विशिष्ट फ़ील्ड के ऐरे एलिमेंट्स काउंट करना

    किसी फ़ील्ड में ऐरे एलिमेंट्स की संख्या गिनने के लिए $size ऑपरेटर का उपयोग करें। डेमो डेटा > db.demo723.insertOne({Subject:[MySQL,MongoDB]}); > db.demo723.insertOne({Subject:[C]}); > db.demo723.insertOne({Subject:[C++,Java,Python]}); क्वेरी db.demo723.aggregate([ { $project: { count:

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

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

  1. - MongoDB में सरणी क्वेरी करके विशिष्ट मान प्राप्त करें

    सरणी से विशिष्ट मान प्राप्त करने के लिए aggregate() के साथ $project का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo761.insertOne( { details: [ { student: { FullName: Chris Brown } } ] } ); { acknowledged : true, insertedId : ObjectId(5eb034d15637cd592b2a4af1) } > db.demo761.insertOne( { de