Du skulle vilja använda $elemMatch
för detta.
{"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/ query/elemMatch/
Du kan också använda mongodb dot notation och det kommer att fungera ungefär som du skulle förutom:
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
Mongodb vet hur man tolkar detta i fall genres
är en array. Tänk bara på att punktnotationsfrågan är något tvetydig, eftersom den också kommer att matcha name
egenskap om genres
egendom är inte en array. Till exempel skulle detta dokument matcha:
{"genres": { "name": "Shooter" } }
I alla fall kan du indexera name
egenskap i genres
array och indexet skulle användas för uppslagningarna.
db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/ ordlista/#term-dot-notation
https://docs.mongodb.com/manual/reference/operator/ query/in/