Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何基于日期时间Python编写pymongo查询以获取所有数据_Python_Pymongo - Fatal编程技术网

如何基于日期时间Python编写pymongo查询以获取所有数据

如何基于日期时间Python编写pymongo查询以获取所有数据,python,pymongo,Python,Pymongo,我在mongodb中有100多个文档,其中包含以下数据: { "Length": 2.9, "Number": 33, "Stop Time": "2020-09-20T11:05:58", "Start Time": "2020-09-20T11:05:53" } 我需要一个查询来获取所有开始时间大于(比如)2020-09-20T11:00:

我在
mongodb
中有100多个文档,其中包含以下数据:

{
    "Length": 2.9,
    "Number": 33,
    "Stop Time": "2020-09-20T11:05:58",
    "Start Time": "2020-09-20T11:05:53"
}
我需要一个查询来获取所有开始时间大于(比如)2020-09-20T11:00:00,小于(停止时间)的文档:“2020-09-21T11:10:00”

为此,我在下面写下了我的疑问

query = [{'$match': {'Start Time': {'$gte': '2020-09-20T11:00:00'}, 'Stop Time': {'$lt': '2020-09-21T11:10:00'}}}]
因此,我想获取日期时间
2020-09-20T11:00:00
2020-09-21T11:10:00
之间的所有文档

在mongodb中,我手动检查了上述日期时间范围内的56个文档,但运行此查询时,我只能获取
2020-09-20
,并且没有
2020-09-21
的数据。我的询问中有什么遗漏吗

data_list = []
document = opc_collection.aggregate(query)
for x in document:
    data_list.append(x)
print(data_list)
编辑:

以下是从字符串转换为日期时间后的数据,单位为db:

{
    "Length": 2.9,
    "Number": 33,
    "Stop Time": "2020-09-20 11:05:58",
    "Start Time": "2020-09-20 11:05:53"
}

query = [{'$match': {'Start Time': {'$gte': '2020-09-20 11:00:00'}, 'Stop Time': {'$lt': '2020-09-21 11:10:00'}}}]

您的日期
2020-09-20T11:00:00
为字符串类型。您必须将其转换为日期时间

datetime.datetime.strptime("2020-09-20T11:00:00", '%Y-%m-%dT%H:%M:%S')

mongodb中存储的日期时间也是字符串,如果是这样,我就不会得到
2020-09-20
的数据。如果我错了,请纠正我。哦,好的。您是否可以更改数据库中的类型并存储日期?因为pymongo将按字母顺序比较字符串,而不会将它们作为日期进行比较。但是,可以在mongo查询中更改字段的类型,但这比直接比较日期要慢。我只是通过保存日期时间而不是字符串来进行快速测试。首先,我不知道为什么当前时间是
20:52
,但mongodb将其保存为
02:23
。我已经应用了上面的查询,但是仍然没有得到任何结果。时差可能是由于时区的原因。Mongo在日期末尾存储一个参数,如
2020-09-21T12:08:46.512890+02:00
。因此,您的数据库中有
ISODate(…)
,并且在查询时,您已将字符串转换为datetime对象?因此,在查询时,我必须根据当前时间或其保存在数据库中的时区进行查询?