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

MongoDB में नेस्टेड ऐरे के लिए फ़िल्टरिंग कंडीशन सेट करना

नेस्टेड ऐरे को फ़िल्टर करने के लिए $filter, $cond, $map और $anyElementTrue का संयोजन उपयोग करें।

डेमो डेटा

db.demo725.insertOne({
    "details": {
        "userMessages": [
            { "Messages": [ { "Message": "Hello" }, { "Message": "How" }, { "Message": "are" } ] },
            { "Messages": [ { "Message": "Good" }, { "Message": "Bye" } ] },
            { "Messages": [ { "Message": "Hello" }, { "Message": "Bye" } ] }
        ]
    }
});

फ़िल्टर क्वेरी

केवल उन्हीं userMessages को रखें जिनमें कम से कम एक "Hello" मैसेज हो:

db.demo725.aggregate([
    {
        $addFields: {
            "details.userMessages": {
                $filter: {
                    input: "$details.userMessages",
                    as: "out",
                    cond: {
                        $anyElementTrue: {
                            $map: {
                                input: "$$out.Messages",
                                in: { $gte: [ { $indexOfBytes: [ "$$this.Message", "Hello" ] }, 0 ] }
                            }
                        }
                    }
                }
            }
        }
    }
]).pretty()

परिणाम

{
    "_id" : ObjectId("5eab16cd43417811278f5893"),
    "details" : {
        "userMessages" : [
            { "Messages" : [ { "Message" : "Hello" }, { "Message" : "How" }, { "Message" : "are" } ] },
            { "Messages" : [ { "Message" : "Hello" }, { "Message" : "Bye" } ] }
        ]
    }
}

दूसरा एलिमेंट ("Good", "Bye") हटा दिया गया क्योंकि इसमें "Hello" नहीं था।

  1. - MongoDB find() क्वेरी: नेस्टेड दस्तावेज के लिए

    नेस्टेड दस्तावेज से मान प्राप्त करने के लिए, डॉट नोटेशन का उपयोग करें। आइए दस्तावेजों के साथ एक कलेक्शन बनाते हैं: > db.demo591.insert([ { Name: John, Age: 23 }, { Name: Carol, Age: 26 }, { Name: Robert, Age: 29, details: [ { Email: Robert@gmail.com, CountryName:

  1. - MongoDB में सरणी में डुप्लिकेट की जांच कैसे करें?

    सरणी में डुप्लिकेट जांचने के लिए MongoDB में aggregate() का उपयोग करें। आइए एक कलेक्शन बनाते हैं: > db.demo756.insertOne({SubjectName:[MySQL,MongoDB,Java]}); { acknowledged : true, insertedId : ObjectId(5eb01e0d5637cd592b2a4add) } > db.demo756.insertOne({SubjectName:[MongoDB,MySQL,MongoDB,C,C

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

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