Как вернуть поле записи после обновления запроса с помощью upsert как true в mongodb, используя pymongo? - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь вставить запись в mongodb, но я не хочу дублирования, поэтому я использую команду update с upsert=true

import pymongo
client = pymongo.MongoClient(settings.MONGO_DB_URI)
db = self.client[settings.MONGO_DB_NAME]
filter = {
    'my_id': '1234',
    'name': 'alok'
}
record = {
    'my_id': '1234',
    'name': 'alok',
    'marks': 26
}
status = db['mycollection'].update(filter, {'$setOnInsert': record}, upsert=True)  
print('id is ', status['my_id']) # this will not work but I want such behaviour

Этот код будет вставлять запись, только если не существует существующей записис соответствующими значениями фильтра.Таким образом, есть два случая:
Он будет вставлять запись
Он не будет вставлять запись, если уже существует
В обоих случаях я хочу получить my_id.Как я могу получить my_id при выполнении команды обновления?

1 Ответ

0 голосов
/ 31 января 2019

Вы можете найти документ, а затем распечатать его идентификатор

print('id is ', db['mycollection'].find_one(filter)['my_id'])
...