Du vil gerne bruge $elemMatch
for dette.
{"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/ query/elemMatch/
Du kan også bruge mongodb-punktnotationen, og den vil stort set fungere som du ville, bortset fra:
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
Mongodb ved, hvordan man fortolker dette i tilfælde af genres
er et array. Bare husk på, at forespørgslen med punktnotation er lidt tvetydig, da den også vil matche name
egenskab i tilfælde af genres
ejendom er ikke en matrix. For eksempel ville dette dokument matche:
{"genres": { "name": "Shooter" } }
I alle tilfælde kan du indeksere name
egenskab i genres
array og indekset ville blive brugt til opslagene.
db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/ ordliste/#term-dot-notation
https://docs.mongodb.com/manual/reference/operator/ query/in/