【问题标题】:Why does mongodb change my date formats to long number and how do I fix it?为什么 mongodb 将我的日期格式更改为长数字,我该如何解决?
【发布时间】:2019-11-19 04:52:55
【问题描述】:

我一直在为我一直从事的项目存储一些虚拟数据。一些数据包括日期格式的日期。但不知何故,我看到它将格式更改为长数字,我不知道为什么。有人可以告诉我如何将格式转换回日期吗?我看到有人建议使用聚合 $todate。例如:

db.getCollection('my_list').aggregate([
  {
    $project: {
      toDate: {
        $toDate: "$published_date"
      }
    }
  }
])

我已经尝试过上面的代码,但这不是永久性更改。 我在python中以日期时间格式得到的数据结果为:9/11/2019 12:00 PM....代码如下:

timestamp = '2019-11-09T12:00:12.000Z'
format = "%Y-%m-%dT%H:%M:%S.%fZ"

some_datetime_obj = datetime.datetime.strptime(timestamp, format)

Some_datetime_obj 返回日期时间格式。

但是当它进入 mongodb 时,我得到一个 NumberLong 对象。 那么如何对数据库中的所有数据进行永久更改呢?

【问题讨论】:

  • 你是如何存储日期的?显示您的数据。
  • @Ashh 我编辑了代码以显示我尝试过的内容
  • 我也尝试过使用:from dateutil.parser import parseparse(timestamp)。从我的控制台,它显示我得到了一个日期时间格式,但是当它进入 mongodb 时,它变成了一个数字。

标签: python-3.x mongodb datetime isodate


【解决方案1】:

我想通了。我不知道为什么,但它是怎么发生的,因为我将我的数据帧转换为 json 格式,然后才插入到 mongodb 中。

旧代码:

records = json.loads(df.T.to_json()).values()
vid_client_db[VID_COL].insert_many(records)

新代码:

records = df.to_dict(orient='row')
vid_client_db[VID_COL].insert_many(records)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 2022-07-04
    • 1970-01-01
    • 2019-11-02
    • 1970-01-01
    相关资源
    最近更新 更多