mongoengine:使用 insert_one 保存后,日期时间对象将转换为字符串

问题描述 投票:0回答:2

我正在尝试使用Python创建一个session_expiry时间,然后使用insert_one()方法将session_expiry插入mongo db中。

将数据插入 mongodb 后,在查询 mongo shell 时,我将获取字符串格式的日期。

这就是它的存储方式 -

"session_expiry" : "2023-06-23T19:55:41.551199"

但我希望它以 ISO 格式存储,如下日期 -

"session_expiry" : ISODate("2023-06-23T13:44:53.740Z")
import datetime
session_expiry = datetime.datetime.utcnow() + datetime.timedelta(minutes=90)

session_expiry的类型是datetime.datetime`

`In [2]: session_expiry = datetime.datetime.utcnow() + datetime.timedelta(minutes=90)

In [3]: session_expiry
Out[3]: datetime.datetime(2023, 6, 23, 21, 55, 49, 2328)

In [4]: type(session_expiry)
Out[4]: datetime.datetime`
mongodb datetime mongoengine isodate
2个回答
0
投票

蟒蛇:

import datetime
import pymongo

db = pymongo.MongoClient()['test']
session_expiry = datetime.datetime.utcnow() + datetime.timedelta(minutes=90)
db['mycollection'].insert_one({'session_expiry': session_expiry})

蒙戈什:

test> db.mycollection.findOne()
{
  _id: ObjectId("64962241fa935efe824f5d07"),
  session_expiry: ISODate("2023-06-24T00:22:49.372Z")
}

0
投票

在 mongoengine 中存储日期时间。你用

DateTimeField

示例:

from mongoengine import *
import datetime

class Token(Document):
   session_expiry = DateTimeField(default=datetime.datetime.utcnow() + datetime.timedelta(minutes=90))
© www.soinside.com 2019 - 2024. All rights reserved.