0% found this document useful (0 votes)
489 views

Introduction To MongoDB Presentation

This document provides an introduction to MongoDB, describing what it is and how it works. MongoDB is an open-source, document-oriented database that uses collections and documents rather than tables and rows. It can scale horizontally by adding more servers to increase performance and handle more data and queries. The document shows how to get started with MongoDB, insert and query documents, update records, and use features like geospatial indexing, MapReduce, and replication.

Uploaded by

Dwarak Chaluvadi
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
489 views

Introduction To MongoDB Presentation

This document provides an introduction to MongoDB, describing what it is and how it works. MongoDB is an open-source, document-oriented database that uses collections and documents rather than tables and rows. It can scale horizontally by adding more servers to increase performance and handle more data and queries. The document shows how to get started with MongoDB, insert and query documents, update records, and use features like geospatial indexing, MapReduce, and replication.

Uploaded by

Dwarak Chaluvadi
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 132

Introduction to MongoDB

Kristina Chodorow [email protected]

Application PHP

Apache
Linux

Database

Application PHP

IIS
Windows

Application PHP

Apache
Linux

Application PHP

Apache
Linux

Application PHP

Apache
Linux

Application PHP

The world's most popular open source database

Apache
Linux

Application PHP

Apache
Linux
The world's most advanced open source database

server

databases
contain tables contain rows

server

schema

databases
contain tables contain rows

server

schema

databases
contain tables contain rows

joins

server

schema

databases
contain tables contain rows

joins

Application Perl

Apache
Linux

getting started

www.mongodb.org

$ mysqld

$ mongod

$ mysql

$ mongo

$ mongo MongoDB shell version 1.5.5 url: test connecting to: test type "help" for help >

$ mongo MongoDB shell version 1.5.5 url: test connecting to: test type "help" for help > db

$ mongo MongoDB shell version 1.5.5 url: test connecting to: test type "help" for help > db test >

$ mongo MongoDB shell version 1.5.5 url: test connecting to: test type "help" for help > db test >

$ mongo MongoDB shell version 1.5.5 url: test connecting to: test type "help" for help > db test > table = db.foo

server

server

databases

server

databases
contain tables

server

databases
contain tables

server

databases
contain tables

server

databases
contain tables contain rows

server

databases
contain tables contain rows

server

databases
contain tables contain rows

server

schema

databases
contain tables contain rows

server

schema

databases
contain tables contain rows

joins

server

databases
contain collections contain documents

$ mongo MongoDB shell version 1.5.5 url: test connecting to: test type "help" for help > db test > collection = db.foo

$ mongo MongoDB shell version 1.5.5 url: test connecting to: test type "help" for help > db test > collection = db.foo

> doc = { ... "name" : "kristina", ... "contact info" : { ... "twitter" : "@kchodorow", ... "email" : "[email protected]" ... }, ... "friends" : 400232, ... "pic" : BinData(...) ... "member since" : new Date()}

> db.foo.insert(doc)

> db.foo.findOne({"name" : "kristina"});

> db.foo.findOne({"name" : "kristina"}) > db.foo.findOne({ ... "contact.twitter" : "@kchodorow"})

> db.foo.findOne({"name" : "kristina"}) > db.foo.findOne({ ... "contact.twitter" : "@kchodorow"}) > db.foo.find({ ... "member since" : { ... "$gt" : yesterday, ... "$lt" : today ... }})

> db.foo.findOne({"name" : "kristina"}) > db.foo.findOne({ ... "contact.twitter" : "@kchodorow"}) > db.foo.find({ ... "member since" : { ... "$gt" : yesterday, ... "$lt" : today ... }}).sort({friends : 1}).limit(10). ... skip(100)

db.people.update( {name : "kristina"},

db.people.update( {name : "kristina"}, {$set :

db.people.update( {name : "kristina"}, {$set : {"contact.website" : "snailinaturtleneck.com" }});

> db.pageviews.update( {url : "example.com"}, {$inc : {pageviews : 1}}, true)

some features

I suddenly have a deep love for stored procedures

I suddenly have a deep love for stored procedures

> db.system.js.insert({ "_id" : "x", "value" : 3}); > db.system.js.insert({ "_id" : "y", "value" : 4}); > db.eval("return x+y")

> db.system.js.insert({_id : "log", ... value : function(msg, level) { ... var date = "[" + new Date() + "] "; ... var lvl = level ? level+" " : ""; ... print(date + lvl + msg); ... }})

> db.eval("log('all your base are belong to us', 'FATAL');");

> db.eval("log('all your base are belong to us', 'FATAL');");

[Fri May 19 18:34:57] FATAL all your base are belong to us

capped collections

indexes

geospatial indexes

MapReduce

what did we leave out?

I say, we should get a mainframe, old chap.

Harumph.

are you practicing safe data storage?

Insert this.

Okay, got it.

Phew, my data's safe.

Write this to disk I know better than he does, I'll just let this sit in a buffer for a while.

All over it!

I have no idea what you're talking about.

trust no one!

...trust a bunch of ones. Mostly.

prod1.example.com

prod2.example.com

prod1.example.com

prod2.example.com

prod1.example.com

prod2.example.com

prod2.example.com

prod1.example.com

prod1.example.com prod2.example.com

prod1.example.com prod2.example.com

prod1.example.com

prod2.example.com

prod1.example.com prod2.example.com

prod1.example.com prod2.example.com

prod1.example.com prod2.example.com

prod1.example.com prod2.example.com

primary secondary
secondary

passive

My priority is 2

My priority is 1

secondary
secondary

passive

primary
secondary

passive

I'm 5 minutes behind the master

I'm 3 seconds behind the master

secondary
secondary

passive

secondary
primary

passive

I'll still take reads.

passive

okay

make sure two slaves have this

all set

scaling

(rdbms)

A-E

F-J

K-O

P-T

U-Z

A-E

F-J

K-O

P-T

U-Z

I want Mark through Sarah.

A-E

F-J

K-O

P-T

U-Z

A-E

F-J

K-O

P-T

U-Z

A-E

F-J

K-O

P-T

U-Z

Insert Linus

A-E

F-J

K-O

P-T

U-Z

Insert Linus

A-E

F-J

K-O

P-T

U-Z

$ mongo MongoDB shell version 1.5.5 url: test connecting to: test type "help" for help >

$ mongo MongoDB shell version 1.5.5 url: test connecting to: test type "help" for help > db.foo.insert({x:1})

thank you!
@kchodorow
http://www.snailinaturtleneck.com

You might also like