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!