Export the whole database on mongodb - mongodb

Is there a way to export the whole database in mongodb instead of exporting a collection this way?
{"_id":{"$oid":"5d3de201b128f8eccc1979a5"},"user":"myuser","password":"$2y$10$euzVCeHJ4XAT0xQuQzUotenktVGCQ5darCSWWQtfYE80IqLovDNfi","widgets":[{"name":"w1","color":"blue"},{"name":"w2","color":"green"}]}

mongodump is a way to do this.
See the documentation

yes please use mongodump
Some parameters are as follow
--db <database>, -d <database>
If you do not specify a database, mongodump copies all databases in this instance into the dump files.
--collection <collection>, -c <collection>
If you do not specify a collection, this option copies all collections in the specified database or instance to the dump files.
so with your condition you can do it like this
mongodump --host mongodb1.example.net --port 37017 --username user --password "pass" --db yourdatabasename --out /opt/backup/mongodumpdir
the default host port is localhost & 27017 .
If you haven't changed the default, you can ignore this

Related

How to restore user defined javascript functions in MongoDB?

I restored MongoDB production database to our testing environment using the mongodump and mongorestore commands. There were 414 user defined functions in our database and none of them were restored. How can I restore the functions in the production environment in the testing environment?
It is pretty simple. The system.js function is also a collection. So you can dump the collection using the following command and restore using the mongorestore command.
mongodump --host youripaddressorlocal --port yourportnumber --username "username" --password "password" --authenticationDatabase admin --collection system.js --db databasename
mongorestore --host localhost --port 27017 --username "username" --password "yourpassword" --collection system.js --drop --db yourdatabase dump/baabtra_db/system.js.bson
--drop is used so that if the function is already there, it will be deleted. Incase if you are still getting the error and if you are not able to delete it, you can use the following command to delete all the functions in the mongoDb.
db.system.js.remove({})
Please note that the curly braces are very important.

MongoDB - dump and restore across different host, db with oplog

Is it possible to take a mongodump and mongorestore it to a different hosts, with different DB names, with oplog enabled?
From: mongodb://user:password#source-hostname:source-port/db1
To: mongodb://user:password#dest-hostname:dest-port/db5
When I do a mongodump with oplog on the source MongoDB, it takes a dump of the entire DB.
mongodump --oplog --host <source-hostname> -u <user> -p <password> --port <source-port> --authenticationDatabase admin
Now for the restore, I want to restore to a different hostname, and the db-name is also different. Is there way to restore the data to this db, with the oplogReplay?
mongorestore --host <dest-host> --port <dest-port> --username <user> --password <password> --authenticationDatabase admin --oplogReplay --db <db5> <path-to-dump>/dump
If I use oplogReplay, I am getting the following error
Can only replay oplog on full restore
I do not want to do a full restore, as it will create the db-name as db1, whereas I want to make use of db5. Also, there are already multiple DBs on this destination host and I do not want to bombard with another new database.
Any suggestions on this issue?
You can't use two options --oplogReplay and --db at the same time.
If you don't want to restore the full DB, simply go to dump/ folder and delete files for DBs other than db5. Then retry mongorestore without --db:
mongorestore --host <dest-host> --port <dest-port> --username <user> --password <password> --authenticationDatabase admin --oplogReplay <path-to-dump>/dump
If this doesn't not work for you, you may need to import oplog collection to a temporary db, and manipulate it to remove all except records for db5.

Mongorestore don't know what to do with file "db/collection.bson", skipping

I want to migrate my mongodb from 2.0 to 3.0. So I followed the official doc to use mongodump to backup my dbs and use mongorestore to restore the dbs to mongodb 3.0.
But when I use mongorestore, it tells me "don't know what to do with file "db/collection.bson", skipping...".
Nothing to do. How could I migrate my dbs?
Thanks.
EDIT: Here is my steps.
Use mongodump in mongodb 2.0
mongodump
tree dump
db
├── collection-1.bson
├── collection-2.bson
├── collection-3.bson
├── ...
Copy db directory to mongodb 3.0 server.
On the mongodb 3.0 server calls mongorestore db
But I get this error:
mongorestore db
2015-03-10T09:36:26.237+0800 building a list of dbs and collections to restore from db dir
2015-03-10T09:36:26.237+0800 don't know what to do with file "db/collection-1.bson", skipping...
2015-03-10T09:36:26.237+0800 don't know what to do with file "db/collection-2.bson", skipping...
2015-03-10T09:36:26.237+0800 don't know what to do with file "db/collection-3.bson", skipping...
...
2015-03-10T09:36:26.237+0800 done
It seems one must also specify -d in 3.0 like this:
mongorestore -d db db
This answer isn't directly related to your issue case, but the same error output you will receive trying to restore mongo data, dumped with --archive option, available since MongoDB 3.2 version. To resolve this you need to specify --gzip parameter in your mongorestore command. Example:
mongorestore -d destination_db --gzip /path/to/source/db
If you have lost your mongoDb just try running this command:
mongorestore -d destination-db --gzip source-db
Where:
destination-db is the name of the destination database
source-db is the name of the source database.
Following command worked for me in mongoDB 6.0 -
mongorestore --host localhost --port 27017 --db DB-NAME DB-BACKUP-PATH
Please replace DB-NAME and DB-BACKUP-PATH with your actual values. For ex.
mongorestore --host localhost --port 27017 --db demo_db /home/ubuntu/db-backup
Where "/home/ubuntu/db-backup" contains all collections in bson and json format.
Try this one.
mongorestore -db dataBaseName dataBasePath
In order to import data to your mongodb ,You need to specify --db configuration in mongorestore function with name and path, this works for me for bson and json files as well:
mongorestore --db <dbName> <dbPath>
check the data was imported properly using mongo cli
mongo
show databases
use <dbName>
show collections
With mongorestore, the path of those dump files is a required parameter; you've got that right so far, by indicating db.
It is also a good idea as Peter has said to indicate a database to restore the dump files into collections with a /d switch.
Something I didn't realize while struggling with this is that a mongod must be running to consume the restoration. If you have more than 1 mongod running, you should definitely indicate a port with the --port switch. The code that worked for me was:
mongod --dbpath config --port 27019 --logpath log.config --logappend
And in another CLI:
mongorestore --port 27019 /d config config
followed by
mongo localhost:27019/config
to verify that the collections were filled properly.
You want to run mongorestore on the dump directory, not the db/ directory.
mongorestore dump/
Please Follow these intstructions it worked for me
First go to command prompt .
run cd C:\Program Files\MongoDB\Server\3.0\bin .
now ,For suppose your data is in a folder called trading and it contains json files .
and the path for that might be c:\Users\documents\trading.
(mongorestore -d dbName dbPath).
now run mongorestore -d trading c:\Users\documents\trading.
your files will be restored.
Not directly related to your situation but someone could stumble upon this post with similar error for this reason
In my case, the data was provided to me and had been dumped using
mongodump --db ${DB_NAME} --gzip -o ${BACKUP_FILE_GZ}
To restore, you must use following format:
mongorestore --gzip --db "${DB_NAME_RESTORE}" ${BACKUP_FILE_GZ}/${DB_NAME}
mongorestore --uri "mongodb+srv://<user>:<password>#<host>" -d <dbname> <dump dir. address ./something/like/this>
This work fine for me
I used docker to start my mongo db instance & I had default username and password
auth set for database.
Below is how my restore looked like.
mongorestore --authenticationDatabase admin -u root -p example -d test-db /data/test-db
So in-short something of this sort should work.
mongorestore --authenticationDatabase admin -u {USERNAME} -p {PASSWORD} -d {DB_NAME} {/DUMP_PATH}

Openshift - how to run mongoexport to export mongodb collection

I am using MongoDB on Openshift for my application. But i'm not able to locate database files. And if i use mongoexport command where those files will be saved (i'm aware about --out option). Where is mongoexport util exists? And i'm not able to successfully run mongoexport on openshift.
Can anyone help me on this?
First go to your repo folder.
cd app-root/repo/
Then run below mongoexport command.
mongoexport --host hostname --port port --authenticationDatabase admin --username admin --password password --db test --collection collection --out collection.json
--authenticationDatabase is must option when you specify username and password that exists in different database.
Refer this documentation for more options.

How to use mongodump for 1 collection

How can I use mongodump to move a single collection from one database to another?
How should I use the command and its options?
I think it's just:
mongodump --db=<old_db_name> --collection=<collection_name> --out=data/
mongorestore --db=<new_db_name> --collection=<collection_name> data/<db_name>/<collection_name>.bson
Also see docs here and here.
Btw, the other way to move the collection from one database to another is to use renameCollection:
db.runCommand({renameCollection:"<old_db_name>.<collection_name>",to:"<new_db_name>.<collection_name>"})
Here's some related SO threads:
How to copy a collection from one database to another in MongoDB
How to use the dumped data by mongodump?
Taking database (document) dump (backup)
mongodump --host <hostname-of-mongoserver> --db <db-name> --username <dbuser-name> --password <password> --gzip --out </backup/location/>
Taking collection dump (backup)
mongodump --host <hostname-of-mongoserver> --db <db-name> --collection <collection-name> --username <dbuser-name> --password <password> --gzip --out </backup/location/>
mongodump documentation
Very basic commands for dump mongodb.
Dump all collection
mongodump
Dump specific database only
mongodump --db=DB_NAME
Dump database with username & password
mongodump -u=USERNAME -p=PASSWORD --db=DB_NAME
Dump from another host
mongodump --host HOST_NAME/HOST_IP --port HOST_PORT --out {YOUR_DIRECTOTY_PATH} --db=DB_NAME
Only able to dump from another host when they allow it.
If it's a replica set and you want to use the --uri you should use it like this cause documentation states that you can't specify some options when using --uri
mongodump --uri "mongodb://user:password#mongo-en-1.example.io:27017,mongo-en-2.example.io:27017,mongo-en-3.example.io:27017/$Databasename?replicaSet=$replicasetname&authSource=admin" --collection $collectionname
Then restore it the usual way.
Here is an example of how you can export a single collection with mongodump.exe on Windows 10:
"D:\Program Files\MongoDB\Server\4.0\bin\mongodump.exe" -h localhost --port 27017 -d meteor --collection users -o meteor_users
The exported collection is users, the database is meteor, the host localhost, the port is 27017.
The output will be stored in directory meteor_users.
Restoring should use a command like this one:
"D:\Program Files\MongoDB\Server\4.0\bin\mongorestore.exe" -d meteor -c users users.bson
None of them works for me while doing dump for MongoDB atlas. Here is the minor change in the host that work for me
Dump
mongodump --uri mongodb+srv://<USERNAME>:<PASSWORD>#host.abcd.mongodb.net/db_name --collection "user_collection" --gzip --out db_backup_folder
Restore
mongorestore --uri mongodb+srv://<USERNAME>:<PASSWORD>#dbhost.abcd.mongodb.net -d db_name --gzip db_backup_folder
atlas-database-tools-backup-restore