如何编写 pymongo 查询以获取基于日期时间的所有数据 Python
How to write pymongo query to get all the data based on date time Python
我在 mongodb
中有 100 多个文档,其中包含以下数据:
{
"Length": 2.9,
"Number": 33,
"Stop Time": "2020-09-20T11:05:58",
"Start Time": "2020-09-20T11:05:53"
}
我想要一个查询来获取所有 Start Time
大于 2020-09-20T11:00:00
且小于 "Stop Time": "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)
编辑:
下面是数据库中字符串转换为日期时间后的数据:
{
"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
中有 100 多个文档,其中包含以下数据:
{
"Length": 2.9,
"Number": 33,
"Stop Time": "2020-09-20T11:05:58",
"Start Time": "2020-09-20T11:05:53"
}
我想要一个查询来获取所有 Start Time
大于 2020-09-20T11:00:00
且小于 "Stop Time": "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)
编辑:
下面是数据库中字符串转换为日期时间后的数据:
{
"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')