यह एक साधारण क्वेरी के साथ नहीं किया जा सकता है। आपको कर्मचारियों.विभागों पर लूप करना होगा और प्रत्येक पुनरावृत्ति के लिए अपने विभागों_आईडी को एक सरणी में जोड़ना होगा। यह सरणी तब आप अपनी दूसरी पंक्ति में उपयोग कर सकते हैं। यह आपकी पसंद की भाषा में किया गया सबसे अच्छा काम है।
इसे आसान बनाने के लिए, आपको अपनी स्कीमा बदलनी होगी। एक विकल्प विभाग की जानकारी को कर्मचारी रिकॉर्ड में संग्रहीत करना है, लेकिन आपके मामले में आप बहुत सारे डेटा की नकल कर रहे होंगे।
इसके बजाय मैं सुझाव दूंगा कि प्रत्येक विभाग में कर्मचारी आईडी और तारीखों के साथ एक सूची इस तरह हो:
{
"_id" : ObjectId("4f9643957f8b9a3f0a000004"),
"dept_name" : "Marketing",
"managers" : [
]
"employees" : [
{
"employee_id" : ObjectId("4f9643967f8b9a3f0a00005a"),
"from_date" : "1990-01-03",
"to_date" : "1990-01-15"
}
]
}
उस स्थिति में, आप तब बस दौड़ सकते हैं:
db.departments.find( { "employees.employee_id": ObjectId("some_id") } );