Cela ne peut pas être fait avec une simple requête. Vous devrez boucler sur employee.departments et pour chaque itération ajouter son department_id à un tableau. Ce tableau, vous pouvez ensuite l'utiliser dans votre deuxième ligne. C'est quelque chose de mieux fait dans la langue de votre choix.
Afin de faciliter cela, vous devrez modifier votre schéma. Une option consiste à stocker les informations du service dans le dossier de l'employé, mais dans votre cas, vous dupliquez beaucoup de données.
Je suggérerais plutôt que chaque département contienne une liste avec les identifiants des employés et les dates comme ceci :
{
"_id" : ObjectId("4f9643957f8b9a3f0a000004"),
"dept_name" : "Marketing",
"managers" : [
]
"employees" : [
{
"employee_id" : ObjectId("4f9643967f8b9a3f0a00005a"),
"from_date" : "1990-01-03",
"to_date" : "1990-01-15"
}
]
}
Dans ce cas, vous pouvez alors simplement exécuter :
db.departments.find( { "employees.employee_id": ObjectId("some_id") } );