【发布时间】:2019-08-17 08:17:20
【问题描述】:
当日期存储为字符串时,如何按日期查询 db.collection? 由于该数据库很大且不断增长,因此用于转换每个日期时间的 for 循环在很长一段时间内没有意义长期解决方案。
我正在创建一个管道来查询任何给定日期的集合,但我尝试的每个查询都会导致一个空列表 []。
日期格式: "ts": "2018-09-26T21:02:19+00:00"
我正在寻找一种避免在 for 循环中重新格式化 datetime 键的解决方案,因为数据库正在增长,并且它比运行非 datetime 查询需要更长的时间,然后在脚本下游转换为 pandas 然后转换为 datetime。
我已经尝试了各种 SO 帖子的几次尝试,但它们产生了空结果: 1.
n = db.collection.find({'ts':{'$lt':datetime.now(), '$gt':datetime.now() - timedelta(hours=10000)}})
print(n)
[]
2.:
start = datetime(2019, 2, 2, 6, 35, 6, 764)
end = datetime(2019, 2, 20, 6, 55, 3, 381)
doc = db.collection.find({'ts': {'$gte': start, '$lt': end}})
print(doc)
[]
但是我开始认为这是我的日期在 ts 键中的格式。下面是一个文档示例:
{
"_id": {
"$oid": "5babf3dab512dd0165efd36c"
},
"d": [
{
"d": [
17317,
16556,
9680,
55982,
45948
],
"h": 74.65,
"ts": "2018-09-26T21:02:19+00:00",
"p": [
61,
76,
137,
152,
122
],
"si": "9829563c95d0155f",
"t": 24.82,
"ti": "0000000000000000"
},
{
"d": [
17821,
17488,
9199,
56447,
44089
],
"h": 80.09,
"ts": "2018-09-26T21:02:19+00:00",
"p": [
61,
76,
137,
152,
122
],
"si": "a42fbc88a44a316f",
"t": 25.1,
"ti": "0000000000000000"
}
],
"gi": "GW-P1007"}
我在这里错过了什么吗?这是格式问题吗?
【问题讨论】:
标签: python-3.x datetime nested pymongo