Как вставить документ в MongoDB с пользовательским идентификатором объекта в Python

#python #mongodb #pymongo

Вопрос:

Я вставляю документ в коллекцию MongoDB, используя приведенный ниже код:

 try:
    x = coll.insert_one(data_dict).inserted_id
    print(x)
except Exception as e:
    log.error("Exception at saving data for db {}".format(cid))
    log.error(e)
 

Это вставляет документ в коллекцию, и mongo db создает свой собственный идентификатор объекта, как показано на рисунке ниже:

введите описание изображения здесь

_id создается автоматически. Можно ли вставить здесь свой собственный идентификатор? Как мы можем это сделать?

Один из способов сделать это-создать _id в data_dict()

 data_dict['_id'] = uuid.uuid4()
 

а затем сохраните данные в БД. Затем это сохраняет _id с uuid помощью, но тип данных также сохраняется как UUID , и я хочу сохранить его как ObjectID . Кто-нибудь может мне помочь, пожалуйста.

Ответ №1:

Да, вы должны создать свой собственный объект с помощью модуля BSON.

 from bson.objectid import ObjectId
 

Затем вы можете создать свой собственный идентификатор объекта и использовать его для создания или вставки. Это должно быть комментарием, но у меня нет необходимой репутации.