Querrías usar $elemMatch
por esto.
{"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/ consulta/coincidencia de elemento/
También puede usar la notación de puntos mongodb y funcionará prácticamente como lo haría excepto:
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
Mongodb sabe cómo interpretar esto en caso de que genres
es una matriz. Solo tenga en cuenta que la consulta de notación de puntos es ligeramente ambigua, ya que también coincidirá con el name
propiedad en caso de que los genres
propiedad no es una matriz. Por ejemplo, este documento coincidiría con:
{"genres": { "name": "Shooter" } }
En todos los casos se puede indexar el name
propiedad en los genres
matriz y el índice se usaría para las búsquedas.
db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/ glosario/#término-punto-notación
https://docs.mongodb.com/manual/reference/operator/ consulta/en/