Ini tidak dapat dilakukan dengan kueri sederhana. Anda harus mengulang employee.departments dan untuk setiap iterasi tambahkan department_id ke array. Array ini kemudian dapat Anda gunakan di baris kedua Anda. Ini adalah sesuatu yang paling baik dilakukan dalam bahasa pilihan Anda.
Untuk membuatnya lebih mudah, Anda harus mengubah skema Anda. Salah satu opsi adalah menyimpan informasi departemen dalam catatan karyawan, tetapi dalam kasus Anda, Anda akan menduplikasi banyak data.
Saya malah menyarankan agar setiap departemen berisi daftar dengan ID dan tanggal karyawan sebagai gantinya seperti ini:
{
"_id" : ObjectId("4f9643957f8b9a3f0a000004"),
"dept_name" : "Marketing",
"managers" : [
]
"employees" : [
{
"employee_id" : ObjectId("4f9643967f8b9a3f0a00005a"),
"from_date" : "1990-01-03",
"to_date" : "1990-01-15"
}
]
}
Dalam hal ini, Anda cukup menjalankan:
db.departments.find( { "employees.employee_id": ObjectId("some_id") } );