これは、単純なクエリでは実行できません。 employees.departmentsをループし、反復ごとにそのdepartments_idを配列に追加する必要があります。この配列は、2行目で使用できます。これは、選択した言語で行うのが最適です。
これを簡単にするには、スキーマを変更する必要があります。 1つのオプションは、部門情報を従業員レコードに保存することですが、あなたの場合、大量のデータを複製することになります。
代わりに、次のように、各部門に従業員IDと日付のリストを含めることをお勧めします。
{
"_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") } );