सबडॉक्यूमेंट्स के ऐरे को क्वेरी करने के लिए MongoDB में $unwind का उपयोग करें।
नमूना डेटा बनाना (सबडॉक्यूमेंट्स ऐरे)
> db.demo499.insertOne({
"details": [
{ Name:"MIT", Rank: 1, "CountryName":"US" },
{ Name:"Stanford University", Rank: 2 },
{ Name:"University of California, Berkeley", Rank: 3 }
]
} );
सभी दस्तावेज़ देखना
> db.demo499.find();
{ "details" : [ { "Name" : "MIT", "Rank" : 1, "CountryName" : "US" }, { "Name" : "Stanford University", "Rank" : 2 }, { "Name" : "University of California, Berkeley", "Rank" : 3 } ] }
सबडॉक्यूमेंट्स ऐरे क्वेरी करने की क्वेरी (CountryName मौजूद हो)
> db.demo499.aggregate({$unwind: "$details"}, {$match: {"details.CountryName":{$exists: true}}}, {$project: {"details.Name": 1, "details.CountryName": 1, "_id": 0}})
परिणाम (केवल CountryName वाला सबडॉक्यूमेंट):
{ "details" : { "Name" : "MIT", "CountryName" : "US" } }
व्याख्या: $unwind details ऐरे को फ्लैट करता है। $match के साथ $exists: true केवल उन सबडॉक्यूमेंट्स को फ़िल्टर करता है जिनमें CountryName फील्ड मौजूद है। $project केवल Name और CountryName दिखाता है।