MongoDB查询实现必填_id范围与可选OR筛选条件的问题
MongoDB查询问题修复方案
错误原因
你现有查询将两个独立$or条件放在$and数组中,实际执行逻辑为同时满足三个要求:
- 文档
_id属于["abc1","abc2","abc3"] city为new york或new jerseycountry为canadacountry为canada的文档city为toronto,无法满足第二个条件,因此无匹配结果。
正确查询语句
你的需求是_id符合范围的前提下,city匹配指定值或country匹配指定值,因此需要将两个过滤规则合并到同一个$or中,正确写法如下:
{ "$and": [ { "_id": { "$in": ["abc1", "abc2", "abc3"] } }, { "$or": [ { "city": { "$in": ["new york", "new jersey"] } }, { "country": "canada" } ] } ] }
由于MongoDB顶层查询条件默认就是$and关系,也可以简化为更简洁的写法:
{ "_id": { "$in": ["abc1", "abc2", "abc3"] }, "$or": [ { "city": { "$in": ["new york", "new jersey"] } }, { "country": "canada" } ] }
内容的提问来源于stack exchange,提问作者pbuzz007
相关产品推荐
相关产品推荐

