Mongodb update. setOnInsert Mod on _id not allowed
mongodb
Solution
MongoDB uses the 'query' part for an upsert query as part of the set, meaning that you don't have to specify the _id in the set part of you want to specify your own _id.
note: my query above also had a small bug which was the missing upsert flag.
This is the correct query:
db.myCol.update({_id:12345},{$set:{myValue:'hi'}},{upsert:true});
If the record doesn't exist, this query will insert a record which looks like this:
{_id:12345,myValue:'hi'}
Problem
I understand the fact that you can't update _id on an existing mongodb document. But is there a reason that we can't use it in an upsert in the 'setOnInsert' part ? Because it is 'on insert' so it's not an update. My expected usage is this: ``` db.myCol.update({_id:12345},{$setOnInsert:{_id:12345},$set:{myValue:'hi'}}); ``` Is this a bug or am i missing something ?