如何以简洁地道的方式查询MongoDB嵌套字段的两个属性?
MongoDB 匹配嵌套文档多字段的简洁写法
要同时匹配导演的名和姓,最地道简洁的写法是直接将多个嵌套字段条件写在同一个查询对象中:
db.movies.find( { "director.last": "Tarantino", "director.first": "Quentin" } )
为什么之前的写法失败?
你尝试的db.movies.find( { "director": {"last": "Tarantino"}, {"first": "Quentin"} })存在两个问题:
- 语法错误:查询条件必须是单个对象,你写了两个并列的对象结构,MongoDB无法解析。
- 就算修正为
{ "director": {"last": "Tarantino", "first": "Quentin"} },这属于子文档精确匹配,要求director字段的结构和值完全与查询条件一致——如果director后续新增其他字段(比如middle),这个查询就会失效,不符合你的需求场景。
关于$and写法的说明
你用$and的写法确实可行,但MongoDB对查询对象中的多个条件默认就是**逻辑与(AND)**关系,所以显式使用$and属于冗余写法,直接罗列条件更符合MongoDB的常规写法习惯。
内容的提问来源于stack exchange,提问作者equanimity
相关产品推荐
相关产品推荐

