MongoDB / PyMongo / Python (время): получение даты и времени в виде строки - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть база данных MongoDB со следующей структурой в моих документах:

> "_id": {
>       "mandant": "a4da7117-2763-48df-b3a3-d50a0f6006fe",
>       "ersteller": "9bc79ce4-c23a-4c24-a857-80f94a341d39",
>       "sender": "9bc79ce4-c23a-4c24-a857-80f94a341d39",
>       "vorgang": "c08382ed-143f-46f7-8382-ed143f26f7b8",
>       "nachricht": "6c9d3386-001f-4809-9d33-86001fd80990"
>     },
>     "_class": "de.codecraft.amt.storage.model.XAmtshilfe",
>     "created": {
>       "$date": "2018-10-02T09:20:05.060Z"
>     },

Когда я делаю запрос с:

collection = db.find({}, {"_id": 0, "created": 1})

, я получаю следующий результат:

{'created': datetime.datetime(2018, 11, 30, 13, 40, 4, 879000)}

Как мне получить чистое значение даты и времени, чтобы я мог разобрать его на другие формы типов времени?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 июня 2019

Вы также можете преобразовать в строку во время запроса:

pipe =
[  
   {  
      "$project":{  
         "_id":0,
         "created":{ "$dateToString":{"format":"%Y%m%dT%H%M", "date":"$created"}},
      }
   }
]
objects = db.aggregate(pipeline=pipe)
0 голосов
/ 03 декабря 2018

PyMongo преобразует метки времени в собственную структуру datetime.datetime.Затем вы можете использовать методы .isoformat() или .strftime(<format>) для преобразования его в строку.

Итак, продолжая ваш пример

objects = db.find({}, {"_id": 0, "created": 1})
for obj in objects:
    dt = obj['created']
    time_str = dt.isoformat()
    # ...
...