mongodb是一款非常流行的NoSQL数据库,其存储的每一个document都有一个唯一的_id字段,而这个_id字段的类型就是ObjectId类型。ObjectId类型是由12个字节组成的,其中4个字节表示时间戳(从MongoDB诞生的时间起算),3个字节表示机器编号,2个字节表示进程编号,3个字节表示随机数。因此,我们可以利用Python的datetime模块来生成时间戳,并将其转化为字节码拼接ObjectId,下面是具体的方法。

方法一:pymongo包生成ObjectId
pymongo是MongoDB的Python驱动程序,其内置ObjectId的生成方法。
```python
from pymongo import MongoClient
import datetime
client = MongoClient()
db = client.test_database
def create_post():
post = {
"author": "Mike",
"text": "My first blog post!",
"tags": ["mongodb", "python", "pymongo"],
"date": datetime.datetime.utcnow()
}
post_id = db.posts.insert_one(post).inserted_id
print(post_id)
print(type(post_id))
create_post()
```
方法二:自己生成ObjectId
```python
import datetime
def create_id():
timestamp = hex(int(datetime.datetime.now().timestamp()))[2:]
machine = hex(int("1f306", 16))[2:]
pid = hex(int("417", 16))[2:]
random = hex(int("06c5", 16))[2:]
oid = timestamp + machine + pid + random
return bytes.fromhex(oid)
print(create_id())
```
以上就是Python根据时间生成mongodb的ObjectId的两种方法,其中方法一使用了pymongo包,方法二自己动手实现。