Mongo - mwicat/personal GitHub Wiki

Install

sudo apt install dirmngr gnupg apt-transport-https software-properties-common ca-certificates curl
curl -fsSL https://www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
sudo add-apt-repository 'deb https://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main'
sudo apt update
sudo apt install mongodb-org
sudo apt install mongodb-org-shell mongodb-org-tools

Backup

mongodump --host mongodb.example.net --port 27017 --username user --password 'pass' --authenticationDatabase admin --out /var/backup/mongodump --db test --collection myCollection 
mongorestore --host mongodb1.example.net --port 27017 --username user --password 'pass' /var/backup/mongodump

Get database to variable

db.getSiblingDB('local')

Recover admin

mongo -u __system -p "$(tr -d '\011-\015\040' < path-to-keyfile)" --authenticationDatabase local
db.createUser({user:"admin",pwd:"ROOT_PASSWORD",roles:["root"]});

Show current user

db.runCommand({connectionStatus: 1})

Show version

db.version()

Find master

db.isMaster()

Show logged users

db.runCommand({connectionStatus : 1})

Interactive

mongo --port yourport yourdb -u user -p password

List databases

show dbs
db.adminCommand( { listDatabases: 1 } )

Drop database

db.dropDatabase

List collections

show collections
db.getCollectionNames()

Show collection row count

db.yourcollection.count()
db.getCollectionNames().forEach(function(coll) { print(coll + ' ' + db[coll].count()) });

Show collection size

db.yourcollection.totalSize()
db.getCollectionNames().forEach(function(coll) { print(coll + ' ' + db[coll].totalSize() / 1024 / 1024 + ' MB') });

Eval command

mongo yourdb -u user -p password --eval 'db.serverStatus()'

Check status

db.serverStatus()

Clear collection

db.collection.remove({})

Show current db

db

List records

db.collectionName.find().pretty()

List users

db.getUsers()

List indexes

db.people.getIndexes()

Python

pymongo

from pymongo import MongoClient
c = MongoClient('mongodb://mongo:27017', replicaSet="rs0", read_preference=ReadPreference.PRIMARY)
c.admin.command('ismaster')

django mongo

c = mongoengine.connection
c.get_db().command('ismaster')

mongoengine

import mongoengine
c = mongoengine.get_connection()
c.admin.command('ismaster')

Remove member

cfg = rs.conf();
cfg.members.splice(start, deleteCount);
rs.reconfig(cfg, {force: true});

Reconfigure

rs.reconfig(rs.config(), {force: true})

Add member to replica

mongo --shell admin
rs.add("yourhost:27017")

don't node elect as primary

rs.add( { host: "yourhost:27017", priority: 0, votes: 0 } )

Promote another node to primary (master)

cfg = rs.conf()
cfg.members[0].priority = 0.5
cfg.members[1].priority = 0.5
cfg.members[2].priority = 1
rs.reconfig(cfg)

Remove member from replica

rs.remove("yourhost:27017")

Check replica status

rs.status()

Show replica config

rs.conf()

Call mongorestore

docker run --interactive --tty --volume /tmp/data_dir:/mongorestore-data mongo:4.0.10 /usr/bin/mongorestore

Call mongodump

docker run --interactive --tty --volume /tmp/data_dir:/mongodump-data mongo:4.0.10 /usr/bin/mongodump

Call mongo

docker run --interactive --tty mongo:4.0.10 /usr/bin/mongo