Как получить идентификатор, когда вставлять с помощью flask_pymongo?

#python #flask #pymongo

Вопрос:

Я хочу получить идентификатор документа, когда я это делаю и вставляю, в настоящее время flask-pymongo возвращает идентификатор объекта только при вставке документа, но не при обновлении.

Я использую следующий код:

 a = mongo.db.abcd.update_one(
    {'abcd': 'abcd1'}, {"$set": {"abcd": "abcd2"}}, upsert=True)

for value in a.raw_result.items():
    print(value)
 

Есть ли какой-нибудь способ вернуть идентификатор?

Спасибо

Ответ №1:

update_one() возвращает экземпляр UpdateResult (https://pymongo.readthedocs.io/en/stable/api/pymongo/collection.html#pymongo.collection.Collection.update_one) и UpdateResult имеют свойство upserted_id .

В документации указано: _id вставленного документа, если произошла замена. В противном Случае-Нет.

https://pymongo.readthedocs.io/en/stable/api/pymongo/results.html#pymongo.results.UpdateResult.upserted_id

Похоже, это то, что тебе нужно