Mit einer einfachen Abfrage ist dies nicht möglich. Sie müssen die Datei „Employees.Departments“ durchlaufen und für jede Iteration die „Departments_ID“ zu einem Array hinzufügen. Dieses Array können Sie dann in Ihrer zweiten Zeile verwenden. Dies geschieht am besten in der Sprache Ihrer Wahl.
Um dies zu vereinfachen, müssen Sie Ihr Schema ändern. Eine Möglichkeit besteht darin, die Abteilungsinformationen im Mitarbeiterdatensatz zu speichern, aber in Ihrem Fall würden Sie viele Daten duplizieren.
Ich würde stattdessen vorschlagen, dass jede Abteilung stattdessen eine Liste mit Mitarbeiter-IDs und Daten wie diese enthält:
{
"_id" : ObjectId("4f9643957f8b9a3f0a000004"),
"dept_name" : "Marketing",
"managers" : [
]
"employees" : [
{
"employee_id" : ObjectId("4f9643967f8b9a3f0a00005a"),
"from_date" : "1990-01-03",
"to_date" : "1990-01-15"
}
]
}
In diesem Fall können Sie dann einfach Folgendes ausführen:
db.departments.find( { "employees.employee_id": ObjectId("some_id") } );