sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongo Consulta un campo anidado dentro de una matriz.

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/