【问题标题】:How to fetch documents based on from and to date using pymongo?如何使用 pymongo 获取基于 from 和 to date 的文档?
【发布时间】:2021-01-02 02:50:26
【问题描述】:

我有一个大型 mongodb 集合,其中“日期”字段为:

'date': '2020-06-11 10:05:03.718804'

我想查找从 from 到 to date 之间的文档。

Mongo 中的数据:(样本集合)

{
"_id":"001",
"color":"Blue",
"status":"available",
"date": "2020-06-11 10:05:03.718804"
},
{
"_id":"002",
"color":"Gold",
"status":"available",
"date": "2020-06-12 11:25:03.714804"
},
{
"_id":"003",
"color":"Violet",
"status":"available",
"date": "2020-06-13 11:25:03.714804"
},
{
"_id":"004",
"color":"White",
"status":"available",
"date": "2020-06-14 11:44:23.618704"
}

Pymongo

from datetime import datetime
from_date = "2020-06-11 10:05:03.718804"
to_date = "2020-06-13 11:44:23.618704"
details = db.collection.find({date: {$gt: from_date, $lt:to_date}})
print(details)

输出:应该列出从开始到结束日期之间的数据。

面临的错误:令牌无效,$gt 和 $lt 无效。

如何根据日期条件查找文件?

提前致谢。

【问题讨论】:

  • 将字典键放在引号中。 {"date": {"$gt": from_date, "$lt": to_date}}
  • 您的日期字段存储为字符串,因此您需要先转换它才能与 $dateFromString 进行比较

标签: python mongodb pymongo python-datetime


【解决方案1】:

您可以使用ISODate 将字符串转换为可比较的日期。

from_date = "2020-06-11 10:05:03.718804"
to_date = "2020-06-13 11:44:23.618704"
details = db.collection.find({"date": { $gte: ISODate(from_date), $lt: ISODate(to_date)}})
print(details)

【讨论】:

    猜你喜欢
    • 2021-05-21
    • 1970-01-01
    • 2017-05-17
    • 1970-01-01
    • 2018-04-29
    • 2021-09-07
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多