Mongodb Mongo-重复文档的对象是否不同?

Mongodb Mongo-重复文档的对象是否不同?,mongodb,pymongo,Mongodb,Pymongo,所以我试图理解ObjectId是如何在Mongo中创建的,我找到了描述它的页面: a 4-byte value representing the seconds since the Unix epoch, a 5-byte random value, and a 3-byte counter, starting with a random value. 由于时间戳的原因,这是否意味着即使在数据库中插入具有相同确切内容的文档,也会被分配两个不同的“objectid” 这个 db.Collecti

所以我试图理解ObjectId是如何在Mongo中创建的,我找到了描述它的页面:

a 4-byte value representing the seconds since the Unix epoch,
a 5-byte random value, and
a 3-byte counter, starting with a random value.
由于时间戳的原因,这是否意味着即使在数据库中插入具有相同确切内容的文档,也会被分配两个不同的“objectid”

这个

db.Collection.insert({'field one' : 'example'} # ObjectID = X
db.Collection.insert({'field one' : 'example'} # ObjectID = Y 

插入文档的内容不会影响生成的ObjectId。即使在一秒钟内、在一台机器上和一个进程中生成两个对象,它们也必须根据3字节计数器而不同,从随机值开始。我测试了您的示例并获得ObjectID,它只在属于此计数器的最后一位数字上有所不同:

import pymongo
from pprint import pprint

client = pymongo.MongoClient()
db = client.db
collection = db.collection

collection.insert_one({'field one' : 'example'}) # ObjectID = X
collection.insert_one({'field one' : 'example'}) # ObjectID = Y 

pprint(list(collection.find()))

# output:
# [{'_id': ObjectId('5c7ee99688f00210d72f224e'), 'field one': 'example'},
#  {'_id': ObjectId('5c7ee99688f00210d72f224f'), 'field one': 'example'}]