Это не очень хорошая идея, но если вы действительно хотите пройти через нее, вы можете попробовать настроить, как показано ниже.
Он должен работать достаточно хорошо в приложении с низким трафиком с одним сервер, но я бы не пробовал ничего подобного с реплицированной или ошпаренной средой или если вы выполняете большое количество вставок.
Создайте отдельную коллекцию для обработки id seqs:
db.seqs.insert({
'collection' : 'admin_collection',
'id' : 0
})
Всякий раз, когда вам нужно вставить новый документ, используйте что-то похожее на это:
def insert_doc(doc):
doc['_id'] = str(db.seqs.find_and_modify(
query={ 'collection' : 'admin_collection' },
update={'$inc': {'id': 1}},
fields={'id': 1, '_id': 0},
new=True
).get('id'))
try:
db.admin_collection.insert(doc)
except pymongo.errors.DuplicateKeyError as e:
insert_doc(doc)