Vous voudriez utiliser $elemMatch
pour cela.
{"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/ requête/elemMatch/
Vous pouvez également utiliser la notation par points mongodb et cela fonctionnera à peu près comme vous le feriez, sauf :
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
Mongodb sait comment interpréter cela au cas où genres
est un tableau. Gardez simplement à l'esprit que la requête en notation par points est légèrement ambiguë, car elle correspondra également au name
propriété au cas où les genres
propriété n'est pas un tableau. Par exemple, ce document correspondrait :
{"genres": { "name": "Shooter" } }
Dans tous les cas vous pouvez indexer le name
propriété dans les genres
tableau et l'index serait utilisé pour les recherches.
db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/ glossaire/#term-dot-notation
https://docs.mongodb.com/manual/reference/operator/ requête/dans/