如何使用 pymongo 在 mongoDB 中为 Date 插入特定的日期格式?
How to insert specific date format for Date in mongoDB with pymongo?
我只需要我的 collections 之一有一个 TTL 索引。
文档指出我应该这样做:
db.log_events.insert( {
"expireAt": new Date('July 22, 2013 14:00:00'),
"logEvent": 2,
"logMessage": "Success!"
} )
在 expireAt
字段上有索引。
我有一个 int
作为输入,表示自纪元以来的时间(以毫秒为单位),我需要创建上述日期。
如何从 millisSinceEpoch
整数中用 datetime
和 pymongo
构建这样的日期?
我找到了很多答案,但我不知道 TTL
索引是否适用于不同于上面显示的日期格式(来自文档)。
使用 datetime.datetime.fromtimestamp()
转换您的时间戳,请记住这需要 秒 内的输入。您可能需要除以 1,000 才能得到毫秒数。
https://docs.python.org/3/library/datetime.html#datetime.date.fromtimestamp
示例代码,与 POSIX 时间戳相互转换:
import pymongo
import datetime
client = pymongo.MongoClient()
db = client['mydatabase']
dt = datetime.datetime.utcnow()
ts = dt.timestamp()
print(ts)
db.mycollection.insert_one({'date': datetime.datetime.fromtimestamp(ts)})
print(list(db.mycollection.find({'date': dt}, {'_id': 0})))
打印:
1635066038.917683
[{'date': datetime.datetime(2021, 10, 24, 10, 0, 38, 917000)}]
我只需要我的 collections 之一有一个 TTL 索引。
文档指出我应该这样做:
db.log_events.insert( { "expireAt": new Date('July 22, 2013 14:00:00'), "logEvent": 2, "logMessage": "Success!" } )
在 expireAt
字段上有索引。
我有一个 int
作为输入,表示自纪元以来的时间(以毫秒为单位),我需要创建上述日期。
如何从 millisSinceEpoch
整数中用 datetime
和 pymongo
构建这样的日期?
我找到了很多答案,但我不知道 TTL
索引是否适用于不同于上面显示的日期格式(来自文档)。
使用 datetime.datetime.fromtimestamp()
转换您的时间戳,请记住这需要 秒 内的输入。您可能需要除以 1,000 才能得到毫秒数。
https://docs.python.org/3/library/datetime.html#datetime.date.fromtimestamp
示例代码,与 POSIX 时间戳相互转换:
import pymongo
import datetime
client = pymongo.MongoClient()
db = client['mydatabase']
dt = datetime.datetime.utcnow()
ts = dt.timestamp()
print(ts)
db.mycollection.insert_one({'date': datetime.datetime.fromtimestamp(ts)})
print(list(db.mycollection.find({'date': dt}, {'_id': 0})))
打印:
1635066038.917683
[{'date': datetime.datetime(2021, 10, 24, 10, 0, 38, 917000)}]