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

如何用pymongo查询含Date.now()时间戳的MongoDB集合指定日期范围数据

解决方法

你只需要先把指定的起止日期转换成对应1970年1月1日UTC至今的毫秒级时间戳,再和createdby.$numberLong字段做范围匹配即可,具体操作步骤和示例代码如下:

  • 第一步:导入需要的依赖模块pymongo和datetime
  • 第二步:将你需要查询的起止日期转换为毫秒级时间戳,注意如果是本地时间建议转成UTC时间避免时区偏差
  • 第三步:构造pymongo查询条件,用$gte(大于等于)和$lte(小于等于)匹配时间范围
from pymongo import MongoClient
from datetime import datetime

# 建立MongoDB连接
client = MongoClient('你的MongoDB连接串')
db = client['你的数据库名']
collection = db['foo_collection']

# 定义要查询的起止日期,此处示例为2021-11-01到2021-11-10的范围,可按需修改
start_date = datetime(2021, 11, 1, 0, 0, 0)
end_date = datetime(2021, 11, 10, 23, 59, 59)

# 转换为毫秒级时间戳,再转成字符串和$numberLong的存储格式匹配
start_ts = str(int(start_date.timestamp() * 1000))
end_ts = str(int(end_date.timestamp() * 1000))

# 构造查询条件
query = {
    "createdby.$numberLong": {
        "$gte": start_ts,
        "$lte": end_ts
    }
}

# 执行查询获取结果
results = list(collection.find(query))

# 可打印结果验证
for doc in results:
    print(doc)

注意:如果你的查询日期带时区,构造datetime对象时需要指定tzinfo参数为对应时区,避免转换出来的时间戳出现偏差,导致查询结果不符合预期。如果存储的createdby时间戳本身是UTC时间,转换查询日期时也建议用UTC时间构造datetime对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:54:07