MongoDB中$and运算符与隐式and查询结果不一致问题咨询
结论
这不是隐式AND的已知BUG,是你的隐式AND写法存在语法错误。
原因说明
- MongoDB隐式AND的生效前提是:同一查询对象内的多个并列查询条件未显式指定逻辑运算符,且不存在重复的顶级键。
- 你所写的隐式写法
{ VRT_Cvert: {$gte: -1.41}, VRT_Cvert: {$lte: -1.39} },属于在同一个BSON对象内重复声明VRT_Cvert键。遵循JSON/BSON的通用规则,同一对象内的重复键会被后声明的内容覆盖,因此该查询实际生效的只有{ VRT_Cvert: {$lte: -1.39} }这一个条件,自然会返回超出-1.41下限的不符合要求的文档。
正确的隐式AND写法
针对单字段多查询条件的场景,需要把多个运算符放在同一个字段的配置对象内,才能触发正确的隐式AND逻辑:
{ VRT_Cvert: {$gte: -1.41, $lte: -1.39} }
该写法的查询结果和你提供的显式$and写法完全一致。
内容的提问来源于stack exchange,提问作者AntonEagle
相关产品推荐
相关产品推荐

