Você gostaria de usar
$elemMatch
por esta. {"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/ query/elemMatch/
Você também pode usar a notação de ponto mongodb e funcionará como você, exceto:
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
O Mongodb sabe como interpretar isso no caso de
genres
é uma matriz. Lembre-se de que a consulta de notação de ponto é um pouco ambígua, pois também corresponderá ao name
propriedade caso os genres
propriedade não é uma matriz. Por exemplo, este documento corresponderia:{"genres": { "name": "Shooter" } }
Em todos os casos você pode indexar o
name
propriedade nos genres
array e o índice seriam usados para as pesquisas. db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/ glossário/#term-dot-notation
https://docs.mongodb.com/manual/reference/operator/ consulta/em/