Nie można tego zrobić za pomocą prostego zapytania. Będziesz musiał przejść przez pętlę pracownicy.departments i dla każdej iteracji dodać jego Departments_id do tablicy. Tę tablicę możesz następnie użyć w drugim wierszu. Najlepiej zrobić to w wybranym przez Ciebie języku.
Aby to ułatwić, będziesz musiał zmienić swój schemat. Jedną z opcji jest przechowywanie informacji o dziale w rekordzie pracownika, ale w twoim przypadku duplikowałbyś dużo danych.
Zamiast tego sugerowałbym, aby każdy dział zawierał listę z identyfikatorami pracowników i datami w ten sposób:
{
"_id" : ObjectId("4f9643957f8b9a3f0a000004"),
"dept_name" : "Marketing",
"managers" : [
]
"employees" : [
{
"employee_id" : ObjectId("4f9643967f8b9a3f0a00005a"),
"from_date" : "1990-01-03",
"to_date" : "1990-01-15"
}
]
}
W takim przypadku możesz po prostu uruchomić:
db.departments.find( { "employees.employee_id": ObjectId("some_id") } );