Chciałbyś użyć $elemMatch
w tym celu.
{"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/ zapytanie/elemMatch/
Możesz także użyć notacji mongodb z kropkami, która będzie działać tak, jak byś byś mógł, z wyjątkiem:
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
Mongodb wie, jak to zinterpretować w przypadku genres
jest tablicą. Należy pamiętać, że zapytanie z notacją kropkową jest nieco niejednoznaczne, ponieważ będzie również pasować do name
właściwość w przypadku genres
właściwość nie jest tablicą. Na przykład ten dokument będzie pasował:
{"genres": { "name": "Shooter" } }
We wszystkich przypadkach możesz zindeksować name
właściwość w genres
tablica i indeks zostaną użyte do wyszukiwania.
db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/ słowniczek/#termin-dot-notation
https://docs.mongodb.com/manual/reference/operator/ zapytanie/w/