I want to insert a document into a MongoDB in an idempotent way.
The explanation provided by the MongoDB documentation, and also here on SO, is to use the upsert=True
modifier.
However, to my understanding, this does not guarantee idempotence, because an already existing document could be modified.
The operation I am looking for is as follows:
- If the document, identified by some key, does not exist, insert it.
- If a document with the given key already exists, there are two things that might happen:
- The existing document and the provided document are exactly the same. Then, return the same result as if a new document would have been inserted.
- The existing document differs from the provided document: Throw an error, because idempotence would be violated.
Does MongoDB support such an operation out of the box? Why are upsert operations labelled idempotent even though they might modify the document that is already present?