Can I mongodump from within my app? - mongodb

My client wants to be able to dump the DB and also import, if need be, from within the app. Is this possible?
Thanks.
[EDIT]
I need to execute this in javascript. The client wants to be able to click a button in the app to export the DB.

Yes you can do this
If your app is running (locally on port 3000, add 1 to the port) it will dump to a directory called dump in your current working directory.
mongodump --port 3001
You can also restore the same way, from within the dump directory of the database you're looking to restore (usually meteor)
mongorestore --port 3001 --db meteor ./meteor
Keep in mind to use these tools you need mongodump and mongorestore installed. On mac you can install them with homebrew (mac) or aptitude (ubuntu)

Related

How to Backup a Meteor Mongo Database?

To create a backup of my mongo database, I am trying mongodump from my meteor console. The command successfully completes, but creates an empty folder under the dump folder. I use the command
mongodump -h 127.0.0.1 --port 3001 -d meteor
So basically I am trying to backup my database for reactionecommerce. My question is how to backup a meteor mongodb that is running locally? Thanks for any guidance of help.
The issue was with the mongo version 2.6.10. I installed the latest 3.4.4 in my Ubuntu 64 machine following the instructions https://docs.mongodb.com/master/tutorial/install-mongodb-on-ubuntu/ Now I am able to dump the data without any problem.

Initialize a Mongodb on server

I want to use a script to initialise a MongoDB on a production server from my mongodb developpement instance.
I tried this method on local and it works
https://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/
#jeorfevre you told me about the import, Can you please give me a small exemple with the import, I found something you talk about this? docs.mongodb.com/manual/reference/program/mongoimport
Thanks in advance :)
once you have your database dev database ready to be installed in production.
Launch a command line
run mongodump
mongodump --host mongodb.example.net --port 27017 --out /path/backup/
transfert the exported file to the server (this depends on server envs)
run mongorestore on the server
mongorestore --port 27017 /path/backup/

MongoDB How to move collection from one localhost to another?

I was using MongoDB on localhost of my Ubuntu (just for education purpose), but now, I have a new computer. So, I would like to have this collection on my new PC. What files do I need to copy to do this after installing MongoDB on a new machine ?
Thank you.
First you must read mongo backup and restore this documentation explain how to backup your data base and restore.
Now you should follow this steps :
1> From your old Ubuntu systems takes back up of your DB using following command
mongodump --host DB name --port 27017 --out /path to save your files
this command write data in BSON format, if you want to take only some collections from your DB then use mongodump --collection your collection name --db DB name
2> Now copy all above BSON files to your new PC and use following command to restore your old Ubuntu systems DB.
mongorestore --port <port number> <path to the backup>
before running this command you must install mongoDB.

Update documents from server to local in mongodb

I have two mongodbs, one is on my server and another is on my laptop.
how do I sync from server to local once a day? What is python code to do it?
You can do a mongodump from the server to your laptop and then run mongorestore on your laptop to sync the data. How frequently you want to do this depends on how big your dataset is and if you have the bandwidth for it. You could try the following steps and see if they work for you.
To backup:
From your laptop's Terminal, assuming you have Linux or Mac OSX, run the following commands (the Windows commands are very similar):
$ mongodump --host <HOST> --authenticationDatabase admin -u <USER> --password <PW>
If you don't have authentication set up, then you can omit the authentication and credentials information. So the command would look something like this:
$ mongodump --host <HOST>
To restore:
This will create a dump folder in your current directory containing the backup. Then when you want to restore you would run the following. You can omit the --drop flag if you don't want to drop the databases before restoring.
$ mongorestore --drop
Try these commands and if they work for you, you can write up a shell script which you can run daily in order to sync your database. Also, if your dataset is big enough and you want to be super precise about syncing your data, you can run the mongodump with the --oplog option. This means that the dump will include a partial oplog containing operations from the duration of the mongodump operation. Then to restore you run mongorestore with the --oplogReplay flag. This will ensure that any operations that occurred during the dump will also be backed up.
For more information, you should check out the mongodump and mongorestore pages in the documentation.

Copying MongoDB Database into Local Machine

I have a MongoDB database that resides on a remote server machine whose IP address is 192.168.1.20 on a local network. For development and testing purposes, and since I am not allowed to modify or delete the database on the server for security purposes, I want to copy the database on my local machine for my personal use.
Can anyone please tell me, how do I achieve this?
I do this by creating a dump of the remote db to my local machine, which I then restore:
Make sure you have a mongo instance up and running (eg. run mongod.exe from your bin folder in a terminal window. On my windows computer that's C:\mongodb\bin)
Make a dump from remote db: Open a new terminal window, move to the bin folder again, run:
mongodump -h example.host.com --port 21018 -d dbname --username username --password yourpass
(Change the parameters to suit your own situation.)
Restore the dumped database: Once the dump has been made, run the following command so that you have a local db:
mongorestore -d theNameYouWantForYourLocalDB dump\nameOfRemoteDB
(replace nameOfRemoteDB with the name of the remote db, the same as in previous command, and replace theNameYouWantForYourLocalDB with the name that you want your new local db to have)
There is copy database command which I guess should be good fit for your need.
db.copyDatabase("DATABASENAME", "DATABASENAME", "localhost:27018");
Alternatively, you can just stop MongoDb, copy the database files to another server and run an instance of MongoDb there.
EDIT 2020-04-25
Quote from MongoDB documentation
MongoDB 4.0 deprecates the copydb and the clone commands and their mongo shell helpers db.copyDatabase() and db.cloneDatabase().
As alternatives, users can use mongodump and mongorestore (with the mongorestore options --nsFrom and --nsTo) or write a script using the drivers.
Reference here
This should be a comment to the answer of #malla, but I don't have enough reputation to comment so I'm posting it here for other's reference.
In step 2, When you are trying to dump file from a remote server, remember to add out option so that you can restore locally later: (in my first try, I didn't add it and it failed, saying dump\db_name was not found).I'm not sure whether my way efficient or not. But it worked for me.
Step 2:
mongodump -h example.host.com --port 21018 -d dbname --username username --password yourpass --out <path_you_want_to_dump>
Step 3:
mongorestore -d theNameYouWantForYourLocalDB \<path_you_want_to_dump> + nameOfRemoteDB
The mongoexport command:
http://docs.mongodb.org/manual/core/import-export/
Or, mongodump command:
http://docs.mongodb.org/manual/reference/program/mongodump/
mongodb has commandline tools for importing and exporting. Take a look at mongodump --collection collection --db test and mongorestore --collection people --db accounts dump/accounts/
http://docs.mongodb.org/v2.2/reference/mongodump/
http://docs.mongodb.org/v2.2/reference/mongorestore/
this even works over the network
You can use the mongoexport command to copy the database to your local machine.