Anda ingin menggunakan $elemMatch
untuk ini.
{"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/ query/elemMatch/
Anda juga dapat menggunakan notasi titik mongodb dan itu akan berfungsi seperti yang Anda lakukan kecuali:
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
Mongodb tahu bagaimana menafsirkan ini jika genres
adalah sebuah array. Perlu diingat bahwa kueri notasi titik sedikit ambigu, karena kueri ini juga akan cocok dengan name
properti jika genres
properti bukan array. Misalnya, dokumen ini akan cocok dengan:
{"genres": { "name": "Shooter" } }
Dalam semua kasus, Anda dapat mengindeks name
properti di genres
array dan indeks akan digunakan untuk pencarian.
db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/ glosarium/#istilah-titik-notasi
https://docs.mongodb.com/manual/reference/operator/ kueri/dalam/