You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB含$gt/$lt的Where子句不生效,查询结果不符求助

MongoDB查询返回不符合itemValue条件数据的原因及解决办法

你的查询逻辑存在一个常见的数组匹配误区:当前写法中,itemInfos.itemValue < 180和itemInfos.itemCode = "height"这两个条件是分别作用在数组itemInfos的元素上的——MongoDB会判定只要数组里有任意一个元素满足itemValue < 180,同时有任意一个元素(可以是另一个元素)满足itemCode = "height",这条文档就会被返回。哪怕数组里存在itemValue > 180的元素,只要还有其他元素符合单个条件,整条数据依然会出现在结果里。

要解决这个问题,需要用$elemMatch来约束同一个数组元素同时满足两个条件,修改后的查询语句如下:

{ 
  "customerId" : { "$in" : ["1372727786178519042"]}, 
  "screenTime" : { "$gte" : "2022-08-25 00:00:00", "$lte" : "2023-08-25 23:59:59"}, 
  "itemInfos": {
    "$elemMatch": {
      "itemValue" : { "$lt" : 180}, 
      "itemCode" : "height"
    }
  }
}

这样就能确保只返回那些itemInfos数组中存在同一个元素同时满足itemCode为height且itemValue小于180的文档。

内容的提问来源于stack exchange,提问作者刘文乐

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 12:34:51