MongoDB 小于查询不生效

MongoDB 小于查询不生效,查询出不符合范围的数据,这是我的查询语句

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

查询出 “height”大于 180 的数据

img

【以下回答由 GPT 生成】

首先,根据提供的查询语句看起来你正在使用MongoDB而不是SQL数据库。MongoDB使用自己的查询语法,与传统的SQL语句有所不同。

根据你提供的查询语句,有一个逻辑错误。在查询中,使用$and运算符同时检查两个条件:"itemInfos.itemValue" : { "$lt" : 180}"itemInfos.itemCode" : "height"。这意味着你希望查询满足两个条件的文档。

然而,你的问题是这个查询返回了大于180的数据。这可能是由于$and运算符的使用方式不正确导致的。

下面是一个修正后的查询语句:

{ 
    "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"} }
}

修正后的查询使用了$elemMatch运算符来对itemInfos数组中的元素进行匹配。$elemMatch运算符可以确保两个条件同时满足。

请尝试使用修正后的查询语句,并检查是否能够正确返回小于180的数据。如果仍然遇到问题,请提供更多的信息以便进一步分析。



【相关推荐】


  • 这篇博客: MongoDB本地配置中的 第四步:配置MongoDB服务为本地服务 部分也许能够解决你的问题。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^