你会想使用$elemMatch
为了这。
{"genres": { "$elemMatch" : {"name": "Shooter"} } }
// or
{"genres": { "$elemMatch" : {"name": { "$in": ["Shooter"] } } } }
https://docs.mongodb.com/manual/reference/operator/query/elemMatch/ https://docs.mongodb.com/manual/reference/operator/query/elemMatch/
您还可以使用 mongodb 点表示法,它几乎可以像您一样工作,除了:
{"genres.name": "Shooter"}
// or
{"genres.name": { "$in": ["Shooter"]}}
Mongodb 知道如何解释这个情况genres
是一个数组。
请记住,点表示法查询有点不明确,因为它也会匹配name
财产,如果genres
属性不是数组。例如,此文档将匹配:
{"genres": { "name": "Shooter" } }
在所有情况下,您都可以索引name
财产在genres
数组和索引将用于查找。
db.collection.createIndex({'genres.name': 1})
https://docs.mongodb.com/manual/reference/glossary/#term-dot-notation https://docs.mongodb.com/manual/reference/glossary/#term-dot-notation
https://docs.mongodb.com/manual/reference/operator/query/in/ https://docs.mongodb.com/manual/reference/operator/query/in/