MongoDB में नेस्टेड ऑब्जेक्ट्स ऐरे में फील्ड मिलान
ऑब्जेक्ट्स के ऐरे में विशिष्ट फील्ड मानों से मिलान करने वाले डॉक्यूमेंट्स खोजें।
कलेक्शन बनाना
>db.demo144.insertOne({"EmployeeDetails":[{"EmployeeName":"Chris","EmployeeEmail":"Chris12@gmail.com"},{"EmployeeName":"Bob","EmployeeEmail":"bo22@gmail.com"}]});
{ "acknowledged": true, "insertedId": ObjectId("5e32f1d8fdf09dd6d08539b9") }
>db.demo144.insertOne({"EmployeeDetails":[{"EmployeeName":"David","EmployeeEmail":"david@gmail.com"},{"EmployeeName":"Carol","EmployeeEmail":"Carol@gmail.com"}]});
{ "acknowledged": true, "insertedId": ObjectId("5e32f1f5fdf09dd6d08539ba") }
सभी डॉक्यूमेंट्स
> db.demo144.find();
{ "_id": ObjectId("5e32f1d8fdf09dd6d08539b9"), "EmployeeDetails": [ { "EmployeeName": "Chris", "EmployeeEmail": "Chris12@gmail.com" }, { "EmployeeName": "Bob", "EmployeeEmail": "bo22@gmail.com" } ] }
{ "_id": ObjectId("5e32f1f5fdf09dd6d08539ba"), "EmployeeDetails": [ { "EmployeeName": "David", "EmployeeEmail": "david@gmail.com" }, { "EmployeeName": "Carol", "EmployeeEmail": "Carol@gmail.com" } ] }
ईमेल और नाम से मिलान करने की क्वेरी
>db.demo144.find({"EmployeeDetails.EmployeeName":"David","EmployeeDetails.EmployeeEmail":"david@gmail.com"},{"EmployeeDetails.EmployeeName":1});
परिणाम
व्याख्या
- क्वेरी भाग: {"EmployeeDetails.EmployeeName":"David","EmployeeDetails.EmployeeEmail":"david@gmail.com"}
- डॉट नोटेशन का उपयोग करके नेस्टेड फील्ड्स तक पहुँचता है
- दोनों शर्तें एक ही सब-डॉक्यूमेंट को संतुष्ट करनी चाहिए (MongoDB का अंतर्निहित व्यवहार)
- प्रोजेक्शन भाग: {"EmployeeDetails.EmployeeName":1}
- केवल EmployeeName फील्ड लौटाता है
- लेकिन ध्यान दें: ऐरे के सभी तत्वों के लिए EmployeeName लौटाता है, केवल मिलान वाले के लिए नहीं
महत्वपूर्ण सीमा
प्रोजेक्शन में ऐरे फील्ड के लिए, MongoDB पूरे ऐरे को लौटाता है (केवल मिलान वाले तत्व नहीं)। केवल मिलान वाले सब-डॉक्यूमेंट्स प्राप्त करने के लिए $elemMatch प्रोजेक्शन या एग्रीगेशन ($unwind + $match) का उपयोग करें।