+ All Categories
Home > Documents > ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author...

) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author...

Date post: 01-Aug-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
27
B4M36DS2: Database Systems 2 hƩp://www.ksi.mff.cuni.cz/˜svoboda/courses/2016-1-B4M36DS2/ PracƟcal Class 4 MongoDB Document Database MarƟn Svoboda [email protected]ff.cuni.cz 7. and 8. 11. 2016 Charles University in Prague, Faculty of MathemaƟcs and Physics Czech Technical University in Prague, Faculty of Electrical Engineering
Transcript
Page 1: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

B4M36DS2: Database Systems 2h p://www.ksi.mff.cuni.cz/˜svoboda/courses/2016-1-B4M36DS2/

Prac cal Class 4

MongoDB Document DatabaseMar n [email protected]

7. and 8. 11. 2016

Charles University in Prague, Faculty of Mathema cs and PhysicsCzech Technical University in Prague, Faculty of Electrical Engineering

Page 2: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

Data ModelDatabase system structure

Instance→ databases→ collec ons→ documents

• Database• Collec on

Collec on of documents, usually of a similar structure

• DocumentMongoDB document = one JSON objectEach document…

– belongs to right one collec on– has a unique immutable iden fier _id

Field name restric ons apply– _id, $, .

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 2

Page 3: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

CRUD Opera onsOverview• db.collection.insert()

Inserts a new document into a collec on

• db.collection.update()Modifies an exis ng document / documents orinserts a new one

• db.collection.remove()Deletes an exis ng document / documents

• db.collection.find()Finds documents based on filtering condi onsProjec on and / or sor ng may be applied too

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 3

Page 4: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

Tutorial: MongoDB

Page 5: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

First StepsRemotely connect to our NoSQL server• SSH and SFTP access• PuTTY and WinSCP on Windows• 147.32.83.196:22

Start mongo shell• mongo

Basic useful commands• help

Displays a brief descrip on of basic commands

• exitquit()

Closes the current client connec on

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 5

Page 6: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

DatabasesSwitch to your database• use login

db = db.getSiblingDB('login')Use your login name as a name for your database

List all the exis ng databases• show databases

show dbsdb.adminCommand('listDatabases')

Your database will be created later on implicitly

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 6

Page 7: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

Collec onsCreate a new collec on for actors• db.createCollection("actors")

Suitable when crea ng collec ons with specific op onssince collec ons can also be created implicitly

List all the collec ons within your databases• show collections

db.getCollectionNames()

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 7

Page 8: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

Insert Opera onInserts a new document / documents into a given collec on

dbdb .. collectioncollection .. insertinsert

(( documentdocument

[[ documentdocument

,,

]] ,, optionsoptions

))

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 8

Page 9: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

Inser onsInsert a few new documents into the collec on of actors

db.actors.insert({ _id: "trojan", name: "Ivan Trojan" })

db.actors.insert({ _id: 2, name: "Jiri Machacek" })

db.actors.insert({ _id: ObjectId(), name: "Jitka Schneiderova" })

db.actors.insert({ name: "Zdenek Sverak" })

Retrieve all the actor documentsdb.actors.find()

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 9

Page 10: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

Update Opera onModifies / replaces an exis ng document / documents

dbdb .. collectioncollection .. updateupdate

(( queryquery ,, updateupdate

,, optionsoptions

))

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 10

Page 11: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

UpdatesUpdate the document of actor Ivan Trojan

db.actors.update({ _id: "trojan" },{ name: "Ivan Trojan", year: 1964 }

)

db.actors.update({ name: "Ivan Trojan", year: { $lt: 2000 } },{ name: "Ivan Trojan", year: 1964 }

)

• At most one document is updated• Its content is replaced with a new value

Check the current content of the documentdb.actors.find({ _id: "trojan" })

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 11

Page 12: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

Inser onsUse update method to insert a new actor• Inserts a new document when upsert behavior is enabledand no document could be updateddb.actors.update(

{ _id: "geislerova" },{ name: "Anna Geislerova" },{ upsert: true }

)

Use save method to insert new actors• Document iden fier must not be specified in the queryor must not exist in the collec ondb.actors.save({ name: "Tatiana Vilhelmova" })

db.actors.save({ _id: 6, name: "Sasa Rasilov" })

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 12

Page 13: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

UpdatesUse save method to update actor Ivan Trojan

• Document iden fier must be specified in the queryand must exist in the collec on

db.actors.save({ _id: "trojan", name: "Ivan Trojan", year: 1964 })

Try to modify the document iden fier of an exis ng document

• Your request will be rejected sincedocument iden fiers are immutable

db.actors.update({ _id: "trojan" },{ _id: 1, name: "Ivan Trojan", year: 1964 }

)

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 13

Page 14: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

UpdatesUpdate the document of actor Ivan Trojan

db.actors.update({ _id: "trojan" },{

$set: { year: 1964, age: 52 },$inc: { rating: 1 },$push: { movies: { $each: [ "samotari", "medvidek" ] } }

})

Update mul ple documents at oncedb.actors.update(

{ year: { $lt: 2000 } },{ $set: { rating: 3 } },{ multi: true }

)

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 14

Page 15: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

Remove Opera onRemoves a document / documents from a given collec on

dbdb .. collectioncollection .. removeremove

(( queryquery

,, optionsoptions

))

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 15

Page 16: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

RemovalsRemove selected documents from the collec on of actors

db.actors.remove({ _id: "geislerova" })

db.actors.remove({ year: { $lt: 2000 } },{ justOne: true }

)

Remove all the documents from the collec on of actorsdb.actors.remove({ })

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 16

Page 17: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

Sample DataInsert the following actors into your emp ed collec on

{ _id: "trojan",name: "Ivan Trojan", year: 1964,movies: [ "samotari", "medvidek" ] }

{ _id: "machacek",name: "Jiri Machacek", year: 1966,movies: [ "medvidek", "vratnelahve", "samotari" ] }

{ _id: "schneiderova",name: "Jitka Schneiderova", year: 1973,movies: [ "samotari" ] }

{ _id: "sverak",name: "Zdenek Sverak", year: 1936,movies: [ "vratnelahve" ] }

{ _id: "geislerova",name: "Anna Geislerova", year: 1976 }

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 17

Page 18: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

Find Opera onSelects documents from a given collec on

dbdb .. collectioncollection .. findfind

(( queryquery

,, projectionprojection

))

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 18

Page 19: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

Find Opera on: Projec onProjec on allows us to determine the fields returned in the result

{{ fieldfield :: truetrue

falsefalse

array fieldarray field :: {{ projection operatorprojection operator }}

,,

}}

Projec on operators• $elemMatch, $slice,…

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 19

Page 20: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

Find Opera on: Selec onQuery parameter describes the documents we are interested in

{{ fieldfield :: value / array / documentvalue / array / document

{{ query operatorquery operator

,,

}}

,,

}}

Selec on operators• $eq, $neq, $lt, $lte, $gte, $gt• $in, $nin• $and, $or, $not• $exists, $regex, $text• …

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 20

Page 21: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

QueryingExecute the following document retrievals• Explain the meaning of these queries as well

db.actors.find({ })

db.actors.find({ _id: "trojan" })

db.actors.find({ name: "Ivan Trojan", year: 1964 })

db.actors.find({ year: { $gte: 1960, $lte: 1980 } })

db.actors.find({ movies: { $exists: true } })

db.actors.find({ movies: "medvidek" })

db.actors.find({ movies: { $in: [ "medvidek", "pelisky" ] } })

db.actors.find({ movies: { $all: [ "medvidek", "pelisky" ] } })

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 21

Page 22: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

QueryingExecute the following document retrievals• Explain the meaning of these queries as well

db.actors.find({ $or: [ { year: 1964 }, { rating: { $gte: 3 } } ] })

db.actors.find({ rating: { $not: { $gte: 3 } } })

db.actors.find({ }, { name: 1, year: 1 })

db.actors.find({ }, { movies: 0, _id: 0 })

db.actors.find({ }, { name: 1, movies: { $slice: 2 }, _id: 0 })

db.actors.find().sort({ year: 1, name: -1 })

db.actors.find().sort({ name: 1 }).skip(1).limit(2)

db.actors.find().sort({ name: 1 }).limit(2).skip(1)

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 22

Page 23: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

IndexingExecute the following query and study its execu on plan

db.actors.find({ movies: "medvidek" })

db.actors.find({ movies: "medvidek" }).explain()

Create mul key index for movies of actorsdb.actors.createIndex({ movies: 1 })

Examine the execu on plan once again

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 23

Page 24: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

MapReduceExecutes aMapReduce job on a selected collec on

dbdb .. collectioncollection .. mapReducemapReduce

(( map functionmap function ,, reduce functionreduce function

,, optionsoptions

))

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 24

Page 25: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

MapReduceExecute the followingMapReduce job

db.actors.mapReduce(function() {

emit(this.year, this.name);},function(key, values) {

return values.sort();},{

query: { year: { $lte: 2000 } },sort: { year: -1 },out: { inline: 1 }

})

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 25

Page 26: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

MapReduceImplement and execute the followingMapReduce job• Calculate the overall number of actors for each movie• Find inspira on in…

this.movies.forEach(function(m) { … })Array.sum(values)

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 26

Page 27: ) - Version 3Practical Class 4 - MongoDB Document Database \(7. and 8. 11. 2016\) - Version 3 Author Martin Svoboda - Czech Technical University in Prague Subject B4M36DS2 - Database

ReferencesDocumenta on• h ps://docs.mongodb.com/v3.2/

B4M36DS2: Database Systems 2 | Prac cal Class 4: MongoDB Document Database | 7. and 8. 11. 2016 27


Recommended