MongoDB
Amit Dua
BITS Pilani Assistant Professor
Hyderabad Campus
Pilani Campus Department of CSIS
MongoDB
• properties
• installation
• CRUD basics
• Hands on
Pilani Campus
BITS Pilani, Hyderabad Campus
Motivation
• Arguably Most famous or at least fastest emerging database for
big data and other applications
BITS Pilani, Hyderabad Campus
MongoDB
Seller:
• Store lots and lots of data and work with it efficiently
How it works:
• Database--- shop
• Collections-- users, orders
• Documents-- name:”Amit”, age:30
• name:”Manu”, age:45
• Schema less—Flexible
• Some kind of structure: JSON (data stored in BSON)
• Key –value pair
Pilani Campus
BITS Pilani, Hyderabad Campus
Flights.json
[
{
"departureAirport": "MUC",
"arrivalAirport": "SFO",
"aircraft": "Airbus A380",
"distance": 12000,
"intercontinental": true
},
{
"departureAirport": "LHR",
"arrivalAirport": "TXL",
"aircraft": "Airbus A320",
"distance": 950,
"intercontinental": false
}
]
BITS Pilani, Hyderabad Campus
Key properties
• Allow complex relations to be stored in data
• No Joins, fewer dependencies
• MongoDB stored data in BSON for faster retrieval
• Data stored in logical way
• Opposite of SQL
• Instead of Normalization (store data in different tables)
• Store in same collection
• Fewer relations, less tables
• Instead of fetching from Table A to B to C and get data
• Get it all at one place: Speed and flexibility
BITS Pilani, Hyderabad Campus
MongoDB Ecosystem
BITS Pilani, Hyderabad Campus
MongoDB installation
BITS Pilani, Hyderabad Campus
MongoDB Installation: Windows
• Mongodb.com
• Try free
• Server
• Download
• Install (custom)🡪 MongoDB as a service
• cmd🡪 mongo (error)
• Set environment path
• cmd 🡪 mongo (should work)
• In MAC and Linux have to run mongod (i.e., server separately)
BITS Pilani, Hyderabad Campus
Working with MongoDB
BITS Pilani, Hyderabad Campus
CRUD Basics
BITS Pilani, Hyderabad Campus
⮚ show dbs
⮚ use flights
⮚ show dbs
>db.flightData.insertOne({"departureAirport": "MUC",
"arrivalAirport": "SFO",
"aircraft": "Airbus A380",
"distance": 12000,
"intercontinental": true
})
>db.flightData.find().pretty()
BITS Pilani, Hyderabad Campus
JSON and BSON
BITS Pilani, Hyderabad Campus
Operations on MongoDB
BITS Pilani, Hyderabad Campus
CRUD basics
BITS Pilani, Hyderabad Campus
Time for practical Hands On
BITS Pilani, Hyderabad Campus
Flight Data
BITS Pilani, Hyderabad Campus
insert
>db.flightData.InsertOne({ "departureAirport": "LHR",
"arrivalAirport": "TXL",
"aircraft": "Airbus A320",
"distance": 950,
"intercontinental": false })
>db.flightData.InsertOne({"departureAirport": "LHR",
"arrivalAirport": "TXL“})
>db.flightData.InsertOne({"departureAirport": "LHR",
"arrivalAirport": "TXL“, “_id”:”lhr-txl-1”})
>db.flightData.find().pretty()
>cls
>db.flightData.deleteOne({departuteAirport:”LHR”})
>db.flightData.find().pretty()
BITS Pilani, Hyderabad Campus
delete and update
>db.flightData.deleteOne({_id:”lhr-txl-1”})
>db.flightData.find().pretty()
>db.flightData.deleteMany() //error
>db.flightData.UpdateOne({distance:12000},{marker:”delete”}) //error
>db.flightData.UpdateOne({distance:12000},{$set: {marker:”delete”}})
>db.flightData.find().pretty()
>db.flightData.updateMany({ },{$set: {marker:”to delete”}})
>db.flightData.find().pretty()
>db.flightData.deleteMany({marker:”to delete”})
>db.flightData.find().pretty()
BITS Pilani, Hyderabad Campus
insert
>db.flightData.insertMany([
{
"departureAirport": "MUC",
"arrivalAirport": "SFO",
"aircraft": "Airbus A380",
"distance": 12000,
"intercontinental": true
},
{
"departureAirport": "LHR",
"arrivalAirport": "TXL",
"aircraft": "Airbus A320",
"distance": 950,
"intercontinental": false
}
])
>db.flightData.find().pretty()
BITS Pilani, Hyderabad Campus
find and update
>db.flightData.find("aircraft": "Airbus A380“)
>db.flightData.find("intercontinental": true).pretty()
>db.flightData.find(distance:12000)
>db.flightData.find({distance: {$gt:10000}})
>db.flightData.find({distance: {$gt:900}})
>db.flightData.findOne({distance: {$gt:900}})
>db.flightData.find().pretty()
>db.flightData.updateOne(_id:……………….,{$set:{delayed:true}})
>db.flightData.update(_id:……………….,{$set:{delayed:false}})
>db.flightData.updateOne(_id:……………….,{delayed:true}}) //error
>db.flightData.updateMany(_id:……………….,{delayed:false}}) //error
>db.flightData.update(_id:……………….,{delayed:true}}) //overwrite
>db.flightData.replaceOne(_id:……………….,{delayed:true}})
//overwrite
BITS Pilani, Hyderabad Campus
Insert and find (cursor object)
>db.passengers.insertMany([
{
"name": "Max Schwarzmueller",
"age": 29
},
{
"name": "Manu Lorenz",
"age": 30
},
{
"name": "Chris Hayton",
"age": 35
},
{
"name": "Sandeep Kumar",
"age": 28
}])
>db.passengers.find().pretty()
>it
BITS Pilani, Hyderabad Campus
projection and find
>db.passengers.find({ }, {name: 1}).pretty() //id is always included: default
>db.passengers.find({ }, {name:1, _id:0}).pretty()
> db.passengers.find({ }, {name:1, _id:0, age:0}).pretty() //same as previous
All this happens at the server. No extra burden on network
>db.flightData.updateMany({ }, {$set :{status: {duration: “full”, runtime:”limited”}}})
>db.flightData.find().pretty()
>db.passengers.updateOne({name: “Armin Glutch”}, {$set: {hobbies: [“sports”,
“cooking”]}})
>db.passengers.find().pretty()
>db.passengers.find({name : “Armin Glutch”}).pretty()
>db.passengers.find({name : “Armin Glutch”}).hobbies
>db.passengers.find({hobbies:”sport”}).pretty()
>db.flightData.find({“status.description”:”on-time”}).pretty()
BITS Pilani, Hyderabad Campus
Questions??
BITS Pilani, Hyderabad Campus