Итак, я пытался понять, как создаются 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. Даже если вы сгенерируете два ObjectId в течение одной секунды, на одной машине и в одном процессе, они должны быть разными в соответствии с 3-байтовым счетчиком, начиная со случайного значения. Я проверил ваш пример и получил ObjectIds, которые отличаются только последней цифрой, принадлежащей этому счетчику:
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'}]