HiveBrain v1.2.0
Get Started
← Back to all entries
patternMinor

Mongodb update conditional set operator ($set only when it is insert )

Submitted by: @import:stackexchange-dba··
0
Viewed 0 times
updateinsertoperatormongodbconditionalwhenonlyset

Problem

Is there anything in Mongo update where $set when will work only when an insert is done.

example is I have a collection which has these fields:

  • Username



  • FirstOccurrence



  • Count



What i want that i will run a update operation like this.

coll.update{ q: {username} ,u: {$set:{FirstOccurrence},$inc:count} }


But condition will be if UserName is already existing then it wont run the $set it will just increment the count.

Is it possible to do it I am running Mongo 2.6.4 with Java driver 2.13.0

Regards
Viren

Solution

It will work for conditional $set update operation

http://docs.mongodb.org/manual/reference/operator/update/setOnInsert/

db.products.update(
  { _id: 1 },
  {
    $set: { item: "apple" },
    $setOnInsert: { defaultQty: 100 }
  },
  {upsert: true }
)


Here setOnInsert will set defaultQty only when a new record is inserted.
Both $set and $setOnInsert can be used together.

Code Snippets

db.products.update(
  { _id: 1 },
  {
    $set: { item: "apple" },
    $setOnInsert: { defaultQty: 100 }
  },
  {upsert: true }
)

Context

StackExchange Database Administrators Q#94834, answer score: 5

Revisions (0)

No revisions yet.