Vorresti usare $elemMatch
per questo.
{"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/ query/elemMatch/
Potresti anche usare la notazione del punto mongodb e funzionerà praticamente come faresti tranne:
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
Mongodb sa come interpretarlo nel caso genres
è un array. Tieni presente che la query della notazione del punto è leggermente ambigua, poiché corrisponderà anche al name
proprietà nel caso in cui i genres
la proprietà non è un array. Ad esempio, questo documento corrisponderebbe a:
{"genres": { "name": "Shooter" } }
In tutti i casi puoi indicizzare il name
proprietà nei genres
array e l'indice verrebbero usati per le ricerche.
db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/ glossario/#termine-punto-notazione
https://docs.mongodb.com/manual/reference/operator/ interrogare/in/