13

Is it possible to do bulk update/upsert (not insert) in MongoDB?

If yes, please point me to any docs related to this?

Thanks

Community
  • 1
  • 1
StackUnderflow
  • 24,080
  • 14
  • 54
  • 77

3 Answers3

4

You can use the command line program mongoimport it should be in your MongoDB bin dir ...

There are two options you'll want to look into to use upsert ...

--upsert insert or update objects that already exist
--upsertFields arg comma-separated fields for the query part of the upsert. You should make sure this is indexed

More info here: http://www.mongodb.org/display/DOCS/Import+Export+Tools

Or just do ...

$ mongoimport --help
Justin Jenkins
  • 26,590
  • 6
  • 68
  • 1,285
  • Note: currently --upsert isn't documented in the online docs (they need to be updated) ... but you will see it from the command line --help. – Justin Jenkins Dec 14 '10 at 22:08
3

mongo can execute .js file. you can push all you update commands in a js file.

t.js

db.record.update({md5:"a35f10a8339ab678612d1f86be08b81a"},{$set:{algres:[]}},false,true);
db.record.update({md5:"a35f10a8339ab678612d1f86be08b81b"},{$set:{algres:[]}},false,true);

then, mongo 127.0.0.1/test t.js

Yurets
  • 3,999
  • 17
  • 54
  • 74
unique
  • 31
  • 1
1

Bulk updates can also be done in batches as found in the documentation:

MongoDB Bulk Methods

I use these to import CSV files that I need to massage a bit before importing the data. Its kinda slow when dealing with updates, but it did my 50K document updates in about 83 seconds, which is far slower than mongoimport command.

britztopher
  • 1,214
  • 2
  • 16
  • 26