Skip to main content

MongoDB

Dump DB from mLAB:

mongodump -h x.mlab.com:15799 -u mongo-admin -p root --authenticationDatabase admin -d db -o /x/dumps

Dump DB from Docker host:

mongodump -h 127.0.0.1:27017 -u root -p x --authenticationDatabase admin -d db -o dump/

Restore locally no auth:

mongorestore --db db /root/dumps/db/

Restore locally with auth:

mongorestore --username root --password 'x' --authenticationDatabase admin --db db /x/dumps/db/

Restore in mLAB:

mongorestore -h x.mlab.com:15799 -u mongo-admin -p root --authenticationDatabase admin -d db /x/dumps

Restore productions in staging:

rm -R /var/lib/docker/volumes/x/_data/dump/x/
cp -R /var/lib/docker/volumes/xxx/_data/dump/x /var/lib/docker/volumes/x/_data/dump/x/
mongorestore --drop --username root --password 'x' --authenticationDatabase admin --db db /data/db/dump/x/

Dump DB from container:

45 */1 * * * root /usr/bin/docker exec x sh -c "mongodump -h 127.0.0.1:27017 -u root -p x --authenticationDatabase admin -d x -o /x/x/x/" > /dev/null 2>&1

Dump collection as JSON from container:

45 */1 * * * root /usr/bin/docker exec x sh -c "mongoexport -h 127.0.0.1:27017 -u root -p x -c x --authenticationDatabase admin -d x -o /x/x/x/x.json" > /dev/null 2>&1

Restore DB from container:

5 0 * * 0 root /usr/bin/docker exec x sh -c "mongorestore -h 127.0.0.1:27017 --drop --username root --password 'x' --authenticationDatabase admin --db x /x/db/dump/x/" > /dev/null 2>&1

title: MongoDB - Operation

category: Database

Connecting locally:

mongo

Show databases:

show databases

Connect to admin database and authenticate against it:

use admin
db.auth( "root", "xxx")

Activating database authentication, edit /etc/mongodb.conf and change:

auth = true

Show all collections:

show collections;

Dropping a DB:

use db
db.dropDatabase()

Select all from collection test:

db.test.find()

Select id from collection:

db.test.find( { _id: ObjectId("xxx") } )

Update date based on oid:

db.test.update( { _id: ObjectId("5bd07c89f9e2690020069a78") }, { $set : { "date" : new ISODate("2018-09-29T14:00:00.000Z") } });

Prepare bulk update modifying date variable based on diff between nightly backup and most dump in json format:

grep -A 2000000 xxx dump.json | awk -F ',' '{ print $1 " " $2 }' | sed s/'{"_id":{"$oid":"'//g | sed s/'"date":{"$date":"'//g | sed s/'"}'//g | sed s/T19:/T20:/g | sed s/T18:/T19:/g | sed s/T17:/T18:/g | sed s/T15:/T16:/g | sed s/T14:/T15:/g | sed s/T13:/T14:/g | sed s/T12:/T13:/g | sed s/T11:/T12:/g | sed s/T10:/T11:/g | sed s/T09:/T10:/g | sed s/T08:/T09:/g | awk -F " " '{ print "db.test.update( { _id: ObjectId(\""$1"\") }, { $set : { \"date\" : new ISODate(\""$2"\") } });"}' > /root/dump_mod

Sources: