3. • Document-oriented
• Dynamic queries
• Full dynamic index support
• Efficient binary large-object storage
• Built for speed
• Replication and Auto-failover
4. Installation & start
• Download
http://www.mongodb.org/downloads
• Unzip into a folder
for example /some/path/mongodb
• Run
$bin/mongod --dbpath=/some/path/mongodb
5. Installation via Rails
• $ gem install mongo
Successfully installed mongo-1.6.4
1 gem installed
Installing ri documentation for mongo-1.6.4...
Installing RDoc documentation for mongo-1.6.4...
6. Database structure
• Separate DBs
• Organized into Collections
Top-level key -> Document
• Collections
– Group things into logical classes
– Indexable by one or more keys
– Schema-free!
7. Database structure
• Document
– Always contains key_id
– Creating Relationships:
subdocument, shared key, or DBRef
– Native storage and transfer: BSON
• BSON
– is a binary encoded serialization of JSON-like
documents.
http://bsonspec.org/
8.
9. Using Mongo
D:mongodbbin>mongo
MongoDB shell version: 2.0.6
connecting to: test
> show dbs
local (empty)
test (empty)
> use test
switched to db test
> db.test.find()
> db.test.save({ name:'windy' , skills: 'blackberry, perl, php' })
> db.test.find()
{ "_id" : ObjectId("5008eb49839a10d95a068a01"), "name" : "windy", "skills" : "bl
ackberry, perl, php" }
10. Using Mongo
>use things
switched to db things
>for ( var i=1; i<10; i++) db.things.save( {x: 'No.'+i, counter: i } )
>db.things.find()
{ "_id" : ObjectId("5008f81d839a10d95a068a02"), "x" : "No.1", "counter" : 1 }
{ "_id" : ObjectId("5008f81d839a10d95a068a03"), "x" : "No.2", "counter" : 2 }
{ "_id" : ObjectId("5008f81d839a10d95a068a04"), "x" : "No.3", "counter" : 3 }
{ "_id" : ObjectId("5008f81d839a10d95a068a05"), "x" : "No.4", "counter" : 4 }
{ "_id" : ObjectId("5008f81d839a10d95a068a06"), "x" : "No.5", "counter" : 5 }
{ "_id" : ObjectId("5008f81d839a10d95a068a07"), "x" : "No.6", "counter" : 6 }
{ "_id" : ObjectId("5008f81d839a10d95a068a08"), "x" : "No.7", "counter" : 7 }
{ "_id" : ObjectId("5008f81d839a10d95a068a09"), "x" : "No.8", "counter" : 8 }
{ "_id" : ObjectId("5008f81d839a10d95a068a0a"), "x" : "No.9", "counter" : 9 }
14. Using Mongo
> use teams
switched to db teams
> db.teams.save({ team: 'A' , member : [ 'Kai'] })
> db.teams.find()
{
"_id" : ObjectId("5008fc13839a10d95a068a0c"),
"team" : "A",
"member" : [ "Kai” ]
}
> db.teams.update({ team: 'A' },{ $push : { member : 'Windy' } })
> db.teams.findOne()
{
"_id" : ObjectId("5008fc13839a10d95a068a0c"),
"member" : [ "Kai",
"Windy" ],
“team" : "A"
}
15. Using Mongo
> use simple
switched to db simple
> db.members.save( { name:"Windy", skill: ["java", "php"] } )
> db.teams.save({ team: 'A' })
Members Teams
Windy Project A
16. project_a =
Using Mongo
> windy = db.members.findOne( {name: "Windy"} )
{
"_id" : ObjectId("50090510839a10d95a068a0f"),
"name" : "Windy",
"skill" : [
"java",
"php"
]
}
> project_a = db.teams.findOne( { team : "A" } )
{ "_id" : ObjectId("50090533839a10d95a068a10"), "team" : "A" }
Project A
Windywindy =