Sie möchten $elemMatch
verwenden dafür.
{"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/ Abfrage/elemMatch/
Sie können auch die mongodb-Punktnotation verwenden, und es funktioniert so ziemlich wie Sie es tun würden, außer:
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
Mongodb weiß, wie dies im Fall von genres
zu interpretieren ist ist ein Array. Denken Sie nur daran, dass die Abfrage in Punktnotation etwas mehrdeutig ist, da sie auch mit name
übereinstimmt -Eigenschaft, falls die genres
Eigenschaft ist kein Array. Dieses Dokument würde beispielsweise übereinstimmen mit:
{"genres": { "name": "Shooter" } }
In allen Fällen können Sie den name
indizieren -Eigenschaft in den genres
Array und der Index würden für die Lookups verwendet.
db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/ glossary/#term-dot-notation
https://docs.mongodb.com/manual/reference/operator/ Abfrage/in/