【问题标题】:Pymongo query on datetime key returns mongo query operator and huge int日期时间键上的 Pymongo 查询返回 mongo 查询运算符和巨大的 int
【发布时间】:2020-09-20 08:07:41
【问题描述】:

我正在写这个查询;

end = dt.datetime.today()
start = end - dt.timedelta(7)

query = collection.find({'date' : {'$gt': start, '$lt' : end}},
                       {'_id' : 1, 'name' : 1, 'date_created' : 1})
docs = json.loads(dumps(query))

我在 datetime 对象上使用 pymongo 进行查询,并使用 bson 从字节转换为 json。我得到的是一个文档,它没有一个 datetime 对象,它看起来像这样;

{'_id' : 0, 'name' : 'Brand CN Homepage (Desktop)', 'date' : {'$date' : 1590537600000}}

当我尝试转换那个巨大的整数时,我得到了;

OverflowError: Python int too large to convert to C long

日期键,值应该是这样的;

{'date' : datetime.datetime(2020, 4, 3, 0, 0)}

有没有办法我可以取回一个日期时间对象而不是一个大整数?

【问题讨论】:

    标签: python mongodb pymongo bson python-datetime


    【解决方案1】:

    “日期”:{“$日期”:1590537600000}

    这是时间戳的扩展 json 表示,记录在 here。要加载扩展 json,请使用 json_util 而不是标准库 json 模块。

    【讨论】:

      猜你喜欢
      • 2016-09-25
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多