इसके लिए आप $elemMatch ऑपरेटर का इस्तेमाल कर सकते हैं। $elemMatch ऑपरेटर उन दस्तावेज़ों से मेल खाता है जिनमें कम से कम एक तत्व के साथ एक सरणी फ़ील्ड होता है जो सभी निर्दिष्ट क्वेरी मानदंडों से मेल खाता है। आइए पहले दस्तावेजों के साथ एक संग्रह बनाएं -
> db.filterBySeveralElementsDemo.insertOne( "_id":100, "StudentDetails":[ { "StudentName":"John", "StudentCountryName":"US", }, { "StudentName":"Carol", " StudentCountryName":"UK" } ]});{"स्वीकृत" :सच, "insertedId" :100 }> db.filterBySeveralElementsDemo.insertOne( { "_id":101, "StudentDetails":[ { "StudentName":"सैम" ", "StudentCountryName":"AUS", }, { "StudentName":"Chris", "StudentCountryName":"US" } ] });{ "स्वीकृत" :सच, "insertId" :101 }
खोज () विधि की मदद से संग्रह से सभी दस्तावेजों को प्रदर्शित करने के लिए क्वेरी निम्नलिखित है -
> db.filterBySeveralElementsDemo.find().pretty();
यह निम्नलिखित आउटपुट देगा -
{ "_id" :100, "StudentDetails" :[ { "StudentName" :"John", "StudentCountryName" :"US" }, { "StudentName" :"Carol", "StudentCountryName" :"UK"} ]}{ "_id" :101, "StudentDetails" :[ { "StudentName" :"Sam", "StudentCountryName" :"AUS" }, { "StudentName" :"Chris", "StudentCountryName" :"US" } ] }पूर्व>कई सरणी तत्वों द्वारा फ़िल्टर करने की क्वेरी निम्नलिखित है -
> db.filterBySeveralElementsDemo.find({StudentDetails:{ $elemMatch:{StudentName:'Sam', StudentCountryName:'AUS' }}}).pretty();यह निम्नलिखित आउटपुट देगा -
{ "_id" :101, "StudentDetails" :[ { "StudentName" :"Sam", "StudentCountryName" :"AUS" }, { "StudentName" :"Chris", "StudentCountryName" :"US" } ]}पूर्व>