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

MongoDB基于ISODate的聚合管道查询无匹配结果问题求助

错误原因
  • 核心错误为数据类型不匹配:MongoDB集合中createdAt字段存储的是日期类型,你在查询语句中将比较值写为了字符串格式的"ISODate('2020-10-06T12:09:50.817Z')",MongoDB不会自动把这个字符串解析为日期对象,跨类型比较无法匹配到任何文档。
  • 次要问题:Mongo Shell中的ISODate()语法不能直接在Python(pymongo)环境中使用,需要用Python原生的日期对象进行查询。
修正方案
  1. 首先导入Python标准库的datetime模块:
from datetime import datetime
  1. 修改$match语句中createdAt的筛选条件,使用datetime对象构造查询范围:
match = {
    "$match": {
        'xRounds': { "$gt": 9 },
        'yRounds': { "$gt": 9 },
        'survey': {"$ne": None},
        'createdAt': {
            "$gt": datetime(2020, 10, 6, 12, 9, 50, 817000),
            "$lt": datetime(2021, 10, 7, 12, 9, 50, 817000)
        }
    }
}
注意事项

如果你的createdAt字段存储时带有时区标识,需要构造带对应时区的datetime对象进行查询,避免时区偏移导致的筛选结果不符合预期,Python 3.9+可使用zoneinfo模块、低版本可使用pytz模块实现时区配置。

内容的提问来源于stack exchange,提问作者tigram10

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 13:24:03