Как можно запросить коллекцию db.collection по датам, когда даты хранятся в виде строк? Поскольку эта база данных велика и расширяется, цикл for для преобразования каждой даты-времени не имеет смысла в долгосрочной перспективе решение.
Я создаю конвейер для запроса коллекции на любые заданные даты, но каждый пробный запрос приводит к пустому списку [].
формат даты: "ts": "2018-09-26T21: 02: 19 + 00: 00"
Я ищу решение, которое не позволяет преобразовать ключ datetime в цикле for, потому что база данных растет, и это займет больше времени, чем выполнение запроса без 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"}
Я что-то здесь упускаю? Это проблема форматирования?