MongoDB Basics
MongoDB database basics
{
_id: Object("765uhgsld9900dc"),
name: "Sam",
age: 99,
}
{
_id: Object("560wzlsse2910pb"),
name: "John",
age: 32,
}
- mongo: mongo is the command-line shell that connect to a specific instance of mongod
- mongod: This is the primary daemon process for the MongoDB system
- mongos: sharded cluster
- mongosh: Mongodb shell is a fully functional javascript and node.js REPL environment
mongosh commands
connect through docker bash
docker exec -it [container-name] bash
launch mongo shell mongosh
mongosh -u [user-name] -p [password]
Passing environmental variable to docker
docker run -d --network some-network --name some-mongo \
-e MONGO_INITDB_ROOT_USERNAME=mongoadmin \
-e MONGO_INITDB_ROOT_PASSWORD=secret \
mongo
docker run -it --rm --network some-network mongo \
mongosh --host some-mongo \
-u mongoadmin \
-p secret \
--authenticationDatabase admin \
some-db
Basic commands
list all the databases
show dbs
create database
This command will create the database if it doesn't exist and switch to that database
use [database-name]
drop database
Switch to the database and execute the command below
db.dropDatabase()
create collection and insert document
collection name is visitor and has document with name and age as fields
db.visitor.insertOne({"name":"sam", "age":23})
switching to secopsdb and creating visitor collection with data in it.
test> use secopsdb
switched to db secopsdb
schooldb> db.visitor.insertOne({"name":"sam", "age":23})
create collection with validator
This command creates a collection secopsuser
with required fields name
and age
in the document
secopsdb> db.createCollection("secopsuser", {validator:{$jsonSchema:{bsonType:"object", required:["name","age"], properties:{name:{bsonType:"string", description:"Must be a String and is required"}, age:{bsonType:"int", description:"Must be an Integer and is required"},}}}})
list all the collections
show collections
get detailed information of collection
db.getCollectionInfos({name:"secopsuser"})
drop the colleciton
This command will drop the collection visitor
db.visitor.drop()
insert One user into the collection
db.secopsuser.insertOne({name:"johnny",age:45})
insert Many user into the collection
db.secopsuser.insertMany([{name:"jack",age:22},{name:"sammy",age:39}])
list all documents in the collection
db.secopsuser.find()
list only 2 documents
db.secopsuser.find().limit(2)
find document with field name has john
db.secopsuser.find({name:"john"})
update a document
updates the document with field name
containing john
to John Smith
db.secopsuser.updateOne({name:"john"}, {$set:{name:"John Smith"}})
delete One document
db.secopsuser.deleteOne({name:"sammy"})
delete Many documents
deletes all the documents with fields with age
25
db.secopsuser.deleteMany({age:25})
User management
Authorization and roles management
Create user
db.createUser({user:"bond",pwd:"123456", roles:[{role:"read",db:"secopsdb"}]})
Create Admin user
db.createUser({user:"superbond",pwd:"123456", roles:["root"]})
list users
show users
delete user
db.dropUser("bond")
Enable Authorization
Update the authorization option enabled in the mongod conf file
security:
authorization: enabled
Authenticate User access db
mongosh --port 27017 --authenticateDatabase "secopsdb" -u "bond" -p "123456"