Здесь я использую update_one () pymon go с upsert = True.
Ожидаемый результат - он должен объединиться, если запись уже существует. Но эта команда приводит к ошибке дублирования ключа. Логически uniqueId и _id являются первичными ключами. Но я ничего не устанавливал вручную, так что только _id.
db.alerts.update_one({"uniqueId":doc['uniqueId']},{"$set":doc,"$max":statusDict,"$min":{"_id":newId}},upsert=True)
Ошибка:
E11000 duplicate key error collection: alerts.alerts index: _id_ dup key: { _id: "336" }
Это не ожидается для update_one (), верно?
Упрощено Пример для случая
from pymongo import MongoClient
db = MongoClient()
collection = db.tests.tests
collection.insert_one({"name":"tom","unique":1,"_id":1})
collection.update_one({"unique":1},{"$set":{"name":"jerry"},"$min":{"_id":0}})
Это приводит к ошибке _id field
pymongo.errors.WriteError: Performing an update on the path '_id' would modify the immutable field '_id'