How can do this with Mongo in one [atomic] statement:
insert mytable set MyUniqueKey = ?, X = ? on duplicate key update Y = ?
When this statement is executed for first time it will set X value but after that it will only update Y value.
Only MyUniqueKey is part of unique key and should be looked up for duplicates.
If there is more than one document without a value for the indexed field or is missing the indexed field, the index build will fail with a duplicate key error. You can combine the unique constraint with the sparse index to filter these null values from the unique index and avoid the error.
Update Multiple Fields of a Single Document. We can use $set and $inc operators to update any field in MongoDB. The $set operator will set the newly specified value while the $inc operator will increase the value by a specified value.
To insert records in MongoDB and avoid duplicates, use “unique:true”.
You are looking for the upsert option on the Update
command. The docs should be enough here.
I asked this question on mongodb user group, the answer was that it is not possible and this is an open issue.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With