Мне нужно выполнить массовое обновление в Mongodb, для этого я использую метод pymongo.bulk_write только с операциями UpdateOne.
В случае несоответствующих фильтров я получаю больше полей из других источников и вставляю документ. Но это невозможно при массовой записи, потому что в ответ на массовую запись я получаю BulkWriteResult со следующими полями
'nInserted': 0
'nMatched': 100
'nModified': 80
'nRemoved': 0
'nUpserted': 0
'upserted': []
'writeConcernErrors': []
'writeErrors': []
Не совпадают идентификаторы / индексы.
Каким будет оптимальный способ выполнить этот поток?
(я использую: Mongodb 3.6, python 3.6, pymongo 3.7)
Пример:
поля модели документа = идентификатор пользователя, имя_пользователя, last_seen, google_username
При обновлении должно обновляться только last_seen
db.collection.update( { "user_name": "xyz"},
{ "last_seen": 10000000 })
Если имя пользователя отсутствует, вставьте все поля
db.collection.insert({"userid": 1, "user_name": "xyz", "last_seen":10000000, google_username: "xyz@google.com"})
Так у меня будет очень много данных пользователя.