Dit kan niet worden gedaan met een eenvoudige query. U moet over employee.departments heen lopen en voor elke iteratie zijn afdelingen_id aan een array toevoegen. Deze array kun je dan gebruiken in je tweede regel. U kunt dit het beste doen in de taal van uw keuze.
Om dit gemakkelijker te maken, moet u uw schema wijzigen. Een optie is om de afdelingsinformatie op te slaan in het personeelsdossier, maar in uw geval zou u veel gegevens dupliceren.
Ik zou in plaats daarvan voorstellen om elke afdeling een lijst met werknemers-ID's en datums te laten bevatten, in plaats daarvan als volgt:
{
"_id" : ObjectId("4f9643957f8b9a3f0a000004"),
"dept_name" : "Marketing",
"managers" : [
]
"employees" : [
{
"employee_id" : ObjectId("4f9643967f8b9a3f0a00005a"),
"from_date" : "1990-01-03",
"to_date" : "1990-01-15"
}
]
}
In dat geval kunt u eenvoudig het volgende uitvoeren:
db.departments.find( { "employees.employee_id": ObjectId("some_id") } );