Getting Started With                         MongoDB                         { author: “Ynon Perek” }Friday, December 7, 12
Whoami                     Ynon Perek                     http://ynonperek.com                     ynon@ynonperek.comFrida...
Agenda                              MongoDB Overview                              Mongo Test Drive                        ...
MongoDB Overview                  Data Store for                  JSON ObjectsFriday, December 7, 12
MongoDB Overview                  Data Store for                  JSON Objects          {               “Name” : “Rose Tyl...
JSON Objects                     A JSON Object is a collection of key/value pairs                     Keys are simple stri...
JSON Examples                     {                         “name”: “The Doctor”,                         “age”: 900      ...
MongoDB Overview                     A Document Oriented Database (No SQL)                     No Joins                   ...
Application Architecture                          SERVER          DBFriday, December 7, 12
Mongo Test Drive                         Create MongoLab Account And Start Using The DBFriday, December 7, 12
Install mongo Client                     Download mongo from:                     http://www.mongodb.org/downloads        ...
Install mongo Client                     Choose production release for your architectureFriday, December 7, 12
Install mongo Client                     Note: Still using Windows XP ? You’ll have to use the                     previou...
Meet MongoLabFriday, December 7, 12
Database DashboardFriday, December 7, 12
Create New Database                     Choose database name                     Choose provider                     Choos...
Database DashboardFriday, December 7, 12
Connecting To The DB                     There are two options to work with your new DB                         You can us...
Demo: Creating Documents                     Create a few                     documents on the web                     con...
Mongo Data Model                     DB Design for relational                     database blog app                     DB...
Old-Style Table DB Design             Name               Age       City of Birth             Jim                22        ...
Problems With Tables                     There are too many of them...Friday, December 7, 12
Old-Style Table DB DesignFriday, December 7, 12
Cool MongoDB Design             {                  “title”: “Mongo 101”,                  “author” : “ynonp”,             ...
Mongo Schema                     Use embedded documents or arrays                     Less tables to access:              ...
Q&AFriday, December 7, 12
Lab                     Create a DB for musical info                     Create a collection called albums                ...
CRUD Operations                         Create, Read, Update and Destroy DataFriday, December 7, 12
Mongo CRUD                     Create   is called insert                     Read     is called find                     U...
Mongo CRUD                     From a developer’s perspective, MongoDB operations are                     the same through...
Inserting Data                     Use the command insert or save to insert a new object                     db.collection...
Inserting Data                     Inserting to a new collection creates the collection                     Inserting an o...
Reading Data                     find and findOne perform read operations                     Both take a query           ...
Query Document                     An empty (or missing) query document returns                     everything            ...
Query Document                     Each key/value pair in the query document imposes a                     condition on th...
Query Document                                                        Query Object                     Each key/value pair...
Query Document                     A compound query means a logical AND on the                     conditions.            ...
Quiz: What Is Returned                                         from      alterego   publisher                             ...
Quiz: What Is Returned                                         from      alterego   publisher                     {       ...
More Queries                     You can use “$or” to have an OR expression                     {                         ...
Sub Documents                     If your document has sub-documents, it’s possible to                     query by a full...
Sub Documents                     A partial query matches all objects that have at least the                     required ...
Arrays                     You can use an exact array match by providing the full                     array in the query  ...
Arrays                     You can query for an array that has at least one element                     matching the query...
Arrays                     If you have a subdocument as the element of an array,                     it’s possible to quer...
Query Operators                     Complex queries are performed with special operators.                     These are re...
Comparator Queries                     Value for key a is greater than 10                     { “a” : { “$gt” : 10 }}     ...
Queries: $in, $nin                     Use $in to specify a choice from multiple options                     Value for gra...
Quiz: What Is Selected                     { “reads” : { “$gt” : 10 },                       “author” : { “$nin” : [“admin...
Queries: $all                     Select objects with array containing all elements                     Example:          ...
More Query Operators                     “$size” - array has a specific number of elements                     “$exists” -...
Aggregation                     count()    - returns how many objects found                     distinct() - returns all d...
Resources                     Queries Cheat Sheet                     http://www.10gen.com/sites/default/files/downloads/ ...
Q&AFriday, December 7, 12
Lab                     Using the previously defined musical DB. Query for:                     Albums released after/befo...
Update                     Update operations modify existing data in the DB                     Mongo supports two update ...
Update                     The general form for update is:                     db.collection.update(                      ...
Update                     The second argument to update() is an operator object                     It tells update what ...
Update: set                     $set modifies a value or add a new value                     Example:                     ...
Quiz: $set                     What happens here ?                     db.cats.update(                        { color: “wh...
Quiz: $set                     Update owners array of the first cat with white color                     If you want to up...
Update: inc                     $inc increases a numeric value                     Example:                     { “$inc” :...
Quiz: $inc                     What happens here ?                     db.songs.update(                        { “title” :...
Update: push and pushAll                     push() and pushAll() add items to an existing array                     If th...
Update: addToSet                     The $addToSet adds a new item only if it wasn’t already                     in the ar...
Update: pop                     pop removes items of an array                     Use a value of 1 to remove the last elem...
Update: pull                     Remove a specific item from an array.                     Can use $pullAll to remove all ...
Updating with save()                     The second update operation is save()                     takes a document:      ...
Deleting Data                     remove() deletes objects from a collection                     Takes a query and possibl...
Q&AFriday, December 7, 12
Lab                     From the previous music database:                         Add a new album with 4 tracks           ...
Thank You                     Photos from: http://123rf.com                     Slides available at: http://ynonperek.comF...
Upcoming SlideShare
Loading in...5
×

Introduction To MongoDB

1,399
-1

Published on

MongoDB is the coolest NoSQL DB around, partially because it's simple-by-design philosophy. Without transactions or joins, all the bad vibe of SQL is gone.
In this presentation I demonstrate how to get started with MongoDB in the cloud using Mon

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,399
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
21
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Introduction To MongoDB

  1. 1. Getting Started With MongoDB { author: “Ynon Perek” }Friday, December 7, 12
  2. 2. Whoami Ynon Perek http://ynonperek.com ynon@ynonperek.comFriday, December 7, 12
  3. 3. Agenda MongoDB Overview Mongo Test Drive Mongo Data Model CRUD Operations Working With FilesFriday, December 7, 12
  4. 4. MongoDB Overview Data Store for JSON ObjectsFriday, December 7, 12
  5. 5. MongoDB Overview Data Store for JSON Objects { “Name” : “Rose Tyler” }Friday, December 7, 12
  6. 6. JSON Objects A JSON Object is a collection of key/value pairs Keys are simple strings Values can be: Numbers, Strings, Arrays, Other Objects, and moreFriday, December 7, 12
  7. 7. JSON Examples { “name”: “The Doctor”, “age”: 900 } { “race”: “human”, “body parts” : [“head”, “legs”, “arms”, “eyes”] }Friday, December 7, 12
  8. 8. MongoDB Overview A Document Oriented Database (No SQL) No Joins No TransactionsFriday, December 7, 12
  9. 9. Application Architecture SERVER DBFriday, December 7, 12
  10. 10. Mongo Test Drive Create MongoLab Account And Start Using The DBFriday, December 7, 12
  11. 11. Install mongo Client Download mongo from: http://www.mongodb.org/downloads Extract zip file Run mongoFriday, December 7, 12
  12. 12. Install mongo Client Choose production release for your architectureFriday, December 7, 12
  13. 13. Install mongo Client Note: Still using Windows XP ? You’ll have to use the previous 2.0 versionFriday, December 7, 12
  14. 14. Meet MongoLabFriday, December 7, 12
  15. 15. Database DashboardFriday, December 7, 12
  16. 16. Create New Database Choose database name Choose provider Choose plan (free is good) Create a DB userFriday, December 7, 12
  17. 17. Database DashboardFriday, December 7, 12
  18. 18. Connecting To The DB There are two options to work with your new DB You can use the web console You can use the command line console Let’s start with the web.Friday, December 7, 12
  19. 19. Demo: Creating Documents Create a few documents on the web console Update the data Delete some of them Search by fieldsFriday, December 7, 12
  20. 20. Mongo Data Model DB Design for relational database blog app DB Design for Mongo- based blog appFriday, December 7, 12
  21. 21. Old-Style Table DB Design Name Age City of Birth Jim 22 Ashdod Mike 21 EilatFriday, December 7, 12
  22. 22. Problems With Tables There are too many of them...Friday, December 7, 12
  23. 23. Old-Style Table DB DesignFriday, December 7, 12
  24. 24. Cool MongoDB Design { “title”: “Mongo 101”, “author” : “ynonp”, “comments” : [ { “author” : “...”, “content” : “...” }, { “author” : “...”, “content” : “...” } ], “tags” : [ “funny”, “informative”], “content” : “...” }Friday, December 7, 12
  25. 25. Mongo Schema Use embedded documents or arrays Less tables to access: Better performance SimpleFriday, December 7, 12
  26. 26. Q&AFriday, December 7, 12
  27. 27. Lab Create a DB for musical info Create a collection called albums Add info for 3 albums you like, including: Album Name, Artist, Tracks, Release Date, Genres Tracks is an array of objects Genres is an array of stringsFriday, December 7, 12
  28. 28. CRUD Operations Create, Read, Update and Destroy DataFriday, December 7, 12
  29. 29. Mongo CRUD Create is called insert Read is called find Update is called update Destroy is called removeFriday, December 7, 12
  30. 30. Mongo CRUD From a developer’s perspective, MongoDB operations are the same through the driver and through the console In both cases, operations look like function calls or method invocations We’ll use mongo shell for the rest of this chapterFriday, December 7, 12
  31. 31. Inserting Data Use the command insert or save to insert a new object db.collection.insert( obj ); db.collection.insert( array );Friday, December 7, 12
  32. 32. Inserting Data Inserting to a new collection creates the collection Inserting an object with an _id key, it is used as the object’s id (and must be unique).Friday, December 7, 12
  33. 33. Reading Data find and findOne perform read operations Both take a query find returns a cursor findOne returns an object Optional: Fields to fetch db.collection.find( <query>, <projection> )Friday, December 7, 12
  34. 34. Query Document An empty (or missing) query document returns everything db.collection.find({}) db.collection.find()Friday, December 7, 12
  35. 35. Query Document Each key/value pair in the query document imposes a condition on the results (objects that match). db.movies.find({ “genre” : “indie” }); db.books.find({“pages” : { “$gt” : 100 }});Friday, December 7, 12
  36. 36. Query Document Query Object Each key/value pair in the query document imposes a condition on the results (objects that match). db.movies.find({ “genre” : “indie” }); db.books.find({“pages” : { “$gt” : 100 }});Friday, December 7, 12
  37. 37. Query Document A compound query means a logical AND on the conditions. db.inventory.find( { “type” : “snacks”, “available” : { “$lt” : 10 } });Friday, December 7, 12
  38. 38. Quiz: What Is Returned from alterego publisher Bruce { Earth DC Wayne “publisher” : “DC” } Peter Earth Marvel Parker Krypton Clark Kent DCFriday, December 7, 12
  39. 39. Quiz: What Is Returned from alterego publisher { Bruce “publisher” : Earth DC Wayne “DC”, “from” : “Earth” Peter Earth Marvel } Parker Krypton Clark Kent DCFriday, December 7, 12
  40. 40. More Queries You can use “$or” to have an OR expression { “$or” : [ { “type” : “food” }, { “type” : “drinks” } ] }Friday, December 7, 12
  41. 41. Sub Documents If your document has sub-documents, it’s possible to query by a full sub document or look for a partial match Full sub-document query means subdocument is exactly as specified in the query Example: { ISBN : { “ISBN-10” : “1906465592”, “ISBN-13” : “978-1906465599” }}Friday, December 7, 12
  42. 42. Sub Documents A partial query matches all objects that have at least the required field (but may contain more) Example: { “language.primary” : “english” } Value of language is an object, and it has a field called primaryFriday, December 7, 12
  43. 43. Arrays You can use an exact array match by providing the full array in the query Example: { tags : [ “funny”, “cute”, “cats” ] }Friday, December 7, 12
  44. 44. Arrays You can query for an array that has at least one element matching the query Example: { “tags” : “funny” }Friday, December 7, 12
  45. 45. Arrays If you have a subdocument as the element of an array, it’s possible to query by its fields using the dot notation. Examples: { “tracks.4.name” : “Rose Mary Stretch” } { “tracks.name” : “Rose Mary Stretch” }Friday, December 7, 12
  46. 46. Query Operators Complex queries are performed with special operators. These are reserved words starting with a $ Some of them: $gt, $gte, $lt, $lte, $ne, $in, $nin, $all, $or, $notFriday, December 7, 12
  47. 47. Comparator Queries Value for key a is greater than 10 { “a” : { “$gt” : 10 }} Value for key b is not 7 { “b” : { “$ne” : 7 }} Value for key name is greater (ascii-wise) than ‘bird’ { “name” : { “$gt” : “bird” }}Friday, December 7, 12
  48. 48. Queries: $in, $nin Use $in to specify a choice from multiple options Value for grade is 85, 90 or 100 { “grade” : { “$in” : [ 85, 90, 100 ] } } Value for fruit is neither apple nor banana { “fruit” : { “$nin” : [“apple”, “banana” ] } }Friday, December 7, 12
  49. 49. Quiz: What Is Selected { “reads” : { “$gt” : 10 }, “author” : { “$nin” : [“admin”, “manager”, “boss” ] } } author reads title How To Use admin 99 Mongo How To Make Joe 120 Money Windows Jim 8 ManualFriday, December 7, 12
  50. 50. Queries: $all Select objects with array containing all elements Example: { “tags” : { “$all” : [ “funny”, “cats” ] } }Friday, December 7, 12
  51. 51. More Query Operators “$size” - array has a specific number of elements “$exists” - field present or missing Example: { “friends” : { “$size” : 7 } } { “producer” : { “$exists” : false } }Friday, December 7, 12
  52. 52. Aggregation count() - returns how many objects found distinct() - returns all distinct values for a key Example: db.posts.distinct( “tags” )Friday, December 7, 12
  53. 53. Resources Queries Cheat Sheet http://www.10gen.com/sites/default/files/downloads/ mongodb_qrc_queries.pdfFriday, December 7, 12
  54. 54. Q&AFriday, December 7, 12
  55. 55. Lab Using the previously defined musical DB. Query for: Albums released after/before 2008 Albums with 7 tracks Albums by a specific genre Albums by a specific track name Display ALL different genres in the DBFriday, December 7, 12
  56. 56. Update Update operations modify existing data in the DB Mongo supports two update commands: update() and save() Update is the more general (and complex)Friday, December 7, 12
  57. 57. Update The general form for update is: db.collection.update( <query>, <update>, <options> ) Which Entries What to do with to update themFriday, December 7, 12
  58. 58. Update The second argument to update() is an operator object It tells update what to do with the data Some keys you can use: “$set”, “$inc” “$push”, “$pushAll”, “$addToSet”, “$pop”, “$pull”, “$pullAll”Friday, December 7, 12
  59. 59. Update: set $set modifies a value or add a new value Example: db.posts.update( { title: “Why Is Your Cat Unhappy” }, { $set : { “archived” : true } } );Friday, December 7, 12
  60. 60. Quiz: $set What happens here ? db.cats.update( { color: “white” }, { “$set” : { “owners” : [“John”, “Jim”] } } );Friday, December 7, 12
  61. 61. Quiz: $set Update owners array of the first cat with white color If you want to update all objects, use multi db.cats.update( { color: “white” }, { “$set” : { “owners” : [“John”, “Jim”] } } { multi : true } );Friday, December 7, 12
  62. 62. Update: inc $inc increases a numeric value Example: { “$inc” : { “age” : 11 } }Friday, December 7, 12
  63. 63. Quiz: $inc What happens here ? db.songs.update( { “title” : “Killing Lies” }, { “$inc” : { “plays” : 1 } } );Friday, December 7, 12
  64. 64. Update: push and pushAll push() and pushAll() add items to an existing array If they array did not exists, it is created Example: db.creatures.update( { name: “The Doctor” }, { “$push” : { companions : “Rose Tyler” } } )Friday, December 7, 12
  65. 65. Update: addToSet The $addToSet adds a new item only if it wasn’t already in the array Example: { “$addToSet” : { “tags” : “funny” } }Friday, December 7, 12
  66. 66. Update: pop pop removes items of an array Use a value of 1 to remove the last element Use a value of -1 to remove the first element Example: { “$pop” : { “companions” : 1 } }Friday, December 7, 12
  67. 67. Update: pull Remove a specific item from an array. Can use $pullAll to remove all matching elements Example: { “$pull” : { “companions” : “Rose Tyler” } }Friday, December 7, 12
  68. 68. Updating with save() The second update operation is save() takes a document: If the document has an id - update it If not, insert it to the DBFriday, December 7, 12
  69. 69. Deleting Data remove() deletes objects from a collection Takes a query and possibly a <justOne> arguments Examples: db.posts.remove({ “author” : “Father Angelo” }) db.music.remove({ “genres” : “pop” }) db.posts.remove({ “tags” : “funny” }, 1 );Friday, December 7, 12
  70. 70. Q&AFriday, December 7, 12
  71. 71. Lab From the previous music database: Add a new album with 4 tracks Add a new track to that new album Set property “plays” on all albums to 6 Increase it by 4 only for “indie” albums Delete all “indie” musicFriday, December 7, 12
  72. 72. Thank You Photos from: http://123rf.com Slides available at: http://ynonperek.comFriday, December 7, 12
  1. ¿Le ha llamado la atención una diapositiva en particular?

    Recortar diapositivas es una manera útil de recopilar información importante para consultarla más tarde.

×