MongoDB如何同时查询匹配字符串和字符串数组类型的嵌套字段
错误原因
你写的查询语句属于嵌套文档精确匹配规则:当你直接给favorite.foods赋值一个对象作为查询条件时,MongoDB会要求文档的favorite.foods字段结构、键值对完全和查询参数一致,同时查询运算符$all不能直接作为嵌套对象的属性值参与精确匹配,因此无法命中_id为1的文档。
正确查询方案
如果你的需求是查询同时满足favorite.foods.fruits值为banana,且favorite.foods.fastfood数组同时包含burger和sandwich的文档,使用点运算符单独指定每个嵌套字段的查询条件即可:
db.collectionName.find({ "favorite.foods.fruits": "banana", "favorite.foods.fastfood": { "$all": ["burger", "sandwich"] } })
如果不需要限制fruits的取值,只需要匹配fastfood数组的条件,删除fruits对应的查询条件即可。
内容的提问来源于stack exchange,提问作者bob
相关产品推荐
相关产品推荐

