Importing and Exporting MongoDB Databases

I'm enjoying working with MongoDB but as with any new technology, it can take a little while to find your way around all the tools related to that stack. In particular, I found myself wondering how do I mysqldump for mongodb?

It should have come as no surprise that the command I wanted was called mongodump, really! There are lots of ways of importing/exporting mongodb databases, and there is some excellent documentation on the mongodb.org site about the various tools.

I moved one database from one server to another, and it was pretty straightforward so I thought I'd write down the commands that I used so I can refer to them later (I did this yesterday and already I've had to look at my bash history to remember how to do it!).

Exporting from MongoDB

To export the database, simply tell mongodump which database (or collection) you want to export, and where to export it to. Mine was the pets database, so my command looks like this:

mongodump -d pets -o petsbackup

This dumps the pets database into the petsbackup directory. Take a look at what we have in that directory now:

pets
├── animals.bson
└── system.indexes.bson

0 directories, 2 files

The only collection in my pets database is the animals collection, however you'll see a .bson file for each collection in your database, plus the system indexes collection. It is up to you whether you want to take individual collections, or a whole database, but bear in mind that your choice will dictate whether you get information about indexes etc when you import the data elsewhere.

Importing to MongoDB

To import, simply use the mongorestore command, which accepts either a single .bson file representing a collection, or a directory containing multiple files. Here's my example:

mongorestore -d pets /path/to/pets

You can specify any database name and path to files you like, so for taking backups or restoring additional copies of a database, this can be really handy. The mongo commands are well-documented and I found them easy to work with - hopefully this helps you work with them too!

8 thoughts on “Importing and Exporting MongoDB Databases

  1. I would recommend against using mongodump/mongorestore. It is very slow and once you get past 20/30GB of data it can take hours to restore. Moreover your data keeps changing during the backup - so you don't get a consistent snapshot. Use a filesystem snapshot or cloud snapshot mechanism. At MongoDirector we use LVM snapshots to get a point in time copy of the database and we store it in S3 as a backup - http://blog.mongodirector.com/mongodb-backup-and-restore/

Leave a Reply

Please use [code] and [/code] around any source code you wish to share.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>