U zou $elemMatch
. willen gebruiken hiervoor.
{"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/ query/elemMatch/
Je zou ook de mongodb-puntnotatie kunnen gebruiken en het zal ongeveer werken zoals je zou doen, behalve:
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
Mongodb weet dit te interpreteren in het geval dat genres
is een array. Houd er rekening mee dat de puntnotatie-query enigszins dubbelzinnig is, omdat deze ook overeenkomt met de name
eigenschap in het geval dat de genres
eigenschap is geen array. Dit document zou bijvoorbeeld overeenkomen met:
{"genres": { "name": "Shooter" } }
In alle gevallen kunt u de name
. indexeren eigenschap in de genres
array en de index zou worden gebruikt voor de zoekopdrachten.
db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/ woordenlijst/#term-dot-notation
https://docs.mongodb.com/manual/reference/operator/ vraag/in/