Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)

on

  • 19,788 views

 

Statistics

Views

Total Views
19,788
Views on SlideShare
15,506
Embed Views
4,282

Actions

Likes
30
Downloads
297
Comments
2

27 Embeds 4,282

http://todobi.blogspot.com 2653
http://www.slideshare.net 581
http://todobi.blogspot.com.es 385
http://www.dataprix.com 273
http://todobi.blogspot.mx 148
http://www.10gen.com 86
http://todobi.blogspot.com.ar 77
http://www.todobi.blogspot.com 29
http://feeds.feedburner.com 8
http://paper.li 6
http://todobi.blogspot.com.br 5
http://todobi.blogspot.it 5
http://www.mongodb.org 4
http://todobi.blogspot.in 3
http://webcache.googleusercontent.com 3
http://geacode.appspot.com 2
http://ellieaskswhy.blogspot.com 2
http://todobi.blogspot.be 2
http://todobi.blogspot.pt 2
http://todobi.blogspot.co.uk 1
http://todobi.blogspot.de 1
http://todobi.blogspot.ro 1
http://todobi.blogspot.com.au 1
http://www.todobi.blogspot.com.ar 1
http://localhost:8080 1
http://translate.googleusercontent.com 1
http://todobi.blogspot.ie 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • mongodb
    Are you sure you want to
    Your message goes here
    Processing…
  • 地理位置索引不错
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow) Presentation Transcript

  • 1. MapReduce,  Geospatial  Indexes,   and  Other  Cool  Features Kristina  Chodorow
  • 2. connecting  to   your  mongod
  • 3. connecting  to   your  mongod you
  • 4. connecting  to   your  mongod you mongod
  • 5. mongod
  • 6. mongod
  • 7. update insert query insert query mongod
  • 8. mongod driver
  • 9. query insert driver
  • 10. insert query mongod driver
  • 11. insert getlasterror mongod driver
  • 12. insert getlasterror mongod driver
  • 13. replication Dwight  @  3:15 Farallon Room
  • 14. insert  this
  • 15. all  set
  • 16. insert  this
  • 17. all  set
  • 18. make  sure  two   slaves  have  this
  • 19. all  set
  • 20. make  sure  two   slaves  have  this
  • 21. >  db.runCommand({ ...  getlasterror :  1 ...  })
  • 22. >  db.runCommand({ ...  getlasterror :  1, ...  w  :  3 ...  })
  • 23. >  db.runCommand({ ...  getlasterror :  1, ...  w  :  500 ...  })
  • 24. >  db.runCommand({ ...  getlasterror :  1, ...  w  :  500, ...  wtimeout :  3000 ...  })
  • 25. >  db.runCommand({ ...  getlasterror :  1, ...  fsync :  true ...  })
  • 26. some  internals
  • 27. Operations: insert update remove query get  more
  • 28. Operations: insert update remove query get  more
  • 29. Operations: insert update remove query get  more
  • 30. Operations: insert update remove query get  more
  • 31. Operations: insert update remove query get  more
  • 32. Operations: insert update remove query get  more
  • 33. Operations: insert update remove query get  more
  • 34. get  help
  • 35. $  mongo MongoDB  shell  version  1.5.1 url:  test connecting  to:  test type  "help"  for  help >
  • 36. $  mongo MongoDB  shell  version  1.5.1 url:  test connecting  to:  test type  "help"  for  help >
  • 37. >  db.help() DB  methods: db.addUser() db.auth() db.cloneDatabase() db.commandHelp() db.copyDatabase() db.createCollection() db.currentOp() ...
  • 38. >  db.foo.help() DBCollection help db.foo.count() db.foo.dataSize() db.foo.distinct() db.foo.drop() db.foo.dropIndex() db.foo.dropIndexes() ...
  • 39. >  var cursor  =  db.foo.find() >  cursor.help() DBQuery help .sort() .limit() .skip() .count() .size() ...
  • 40. http://api.mongodb.org/js
  • 41. >  db.foo.count() 40 >
  • 42. >  db.foo.count() 40 >  db.foo.count
  • 43. >  db.foo.count() 40 >  db.foo.count function(x)  { return  this.find(x).count();; } >
  • 44. >  db.foo.count() 40 >  db.foo.count function(x)  { return  this.find(x).count();; } >  var cursor  =  db.foo.find() >
  • 45. >  db.foo.count() 40 >  db.foo.count function(x)  { return  this.find(x).count();; } >  var cursor  =  db.foo.find() >  cursor.count
  • 46. >  cursor.count function(applySkipLimit)  { var cmd =  {count  :  this._collection.getName()};; if  (this._query)  { if  (this._special)  { cmd.query =  this._query.query;; } else  { cmd.query =  this._query;; } } cmd.fields =  this._fields ||  {};; if  (applySkipLimit)  { if  (this._limit)  { cmd.limit =  this._limit;; ...
  • 47. function(x)  { //  prep  cmd ... //  run  command var res  =  this._db.runCommand(cmd);; //  return  result ... }
  • 48. >  db.runCommand({count  :  "foo"}) { "n"  :  40, "ok"  :  1 } >
  • 49. >  db.runCommand({listCommands :  1})
  • 50. >  db.runCommand({listCommands :  1}) { "commands"  :  { "$eval"  :  {...}, "assertinfo :  {...}, "authenticate"  :  {...}, "buildinfo"  :  {...}, "clean"  :  {...}, "clone"  :  {...}, "cloneCollection"  :  {...}, "cloneCollectionAsCapped"  :  {...}, "closeAllDatabases"  :  {...}, ...
  • 51. >  db.runCommand({ ...  datasize :  collectionName})
  • 52. >  db.runCommand({ ...  datasize :  collectionName}) >  db.runCommand({ ...  dbstats :  1})
  • 53. >  db.commandHelp("distinct") help  for:  distinct:  {   distinct  :  'collection  name', key  :  'a.b'  } >
  • 54. >  db.commandHelp("distinct") help  for:  distinct:  {   distinct  :  'collection  name', key  :  'a.b'  } >  db.commandHelp function(name)  { var c  =  {};; c[name]  =  1;; c.help =  true;; return  this.runCommand(c).help;; } >
  • 55. >  db.runCommand({"count"  :  1,   ...  "help"  :  true})
  • 56. >  db.runCommand({"count"  :  1,   ...  "help"  :  true}) help  for:  count:  no  help  defined >
  • 57. $
  • 58. >  db.blog.posts.find( ...  {_id  :  123}, ...  {comments  :  1})
  • 59. >  db.blog.posts.find( ...  {_id  :  123}, ...  {comments  :  {$slice  :  10}})
  • 60. >  db.blog.posts.find( ...  {_id  :  123}, ...  {comments  :  {$slice  :  [20,  10]}})
  • 61. >  db.blog.posts.find( ...  {_id  :  123}, ...  {comments  :  {$slice  :  -­10}})
  • 62. >  db.blog.posts.find( ...  {_id  :  123}, ...  {comments  :  {$slice  :  [-­20,  10]}})
  • 63. >  db.blog.posts.find({ ...  comments  :  { ...      date  :  {$gt :  today}, ...      votes  :  {$gte :  10} ...  }})
  • 64. >  db.blog.posts.find({ ...  'comments.date'  :  {$gt :  today}, ...  'comments.votes'  :  {$gte :  10} ...  })
  • 65. >  db.blog.posts.find({ ...  comments  :  {$elemMatch :  { ...      date  :  {$gt :  today}, ...      votes  :  {$gte :  10} ...  }}})
  • 66. Types
  • 67. minKey maxKey
  • 68. MapReduce
  • 69. { _id  :  123, name  :  "Fred", email  :  "fred@example.com" } { _id  :  456, name  :  "Paul", phone  :  "555-­5555", picture  :  BinData } { _id  :  789, email  :  "alice@example.com", }
  • 70. _id               40 name             32 email         20 phone           2 picture       17 pet             3 friends   40 hobbies       6 favorites   12 notes           14
  • 71. { _id  :  123, name  :  "Fred", email  :  "fred@example.com" }
  • 72. 1 1 1
  • 73. _id 1 name 1 email 1
  • 74. email
  • 75. email
  • 76. 12
  • 77. cluck  cluck 12
  • 78. email 12
  • 79. map  =  function()  { for  (var key  in  this)  { emit(key,  1);; } }
  • 80. reduce  =  function(prev,  current)  { var count  =  0;; for  (var egg  in  current)  { count  +=  current[egg];; } return  count;; }
  • 81. A B C D E F
  • 82. A B C D E F
  • 83. A B C D E F _id  :  A,  value  : _id  :  C,  value  : _id  :  E,  value  : _id  :  B,  value  : _id  :  D,  value  : _id  :  F,  value  :
  • 84. GridFS
  • 85. Indexes
  • 86. >  db.users.find({ ...  date  :  new  Date("10/3/2010")}) >  db.users.ensureIndex({ ...  date  :  1})
  • 87. Dates,  timestamps,  ObjectIds
  • 88. indexing Aaron  @  3:15 Niantic  Room
  • 89. Geospatial  Indexes
  • 90. >  db.map.ensureIndex({location  :  "2d"}) >
  • 91. >  db.map.insert({location  :  [-­40,  78]}) >
  • 92. >  db.map.insert({location  :  [-­40,  78]}) >  db.map.insert({location  :  { ...  x  :  -­40,   ...  y  :  78}}) >
  • 93. >  db.map.insert({location  :  [-­40,  78]}) >  db.map.insert({location  :  { ...  x  :  -­40,   ...  y  :  78}}) >  db.map.insert({location  :  { ...  longitude  :  -­40,   ...  latitude  :  78}}) >
  • 94. >  db.map.find({location  :  { ...  $near  :  [-­40,  77]}})
  • 95. >  db.map.find({location  :  { ...  $near  :  [-­40,  77]}})-­>limit(10)
  • 96. >  db.map.ensureIndex({ ...  location  :  "2d", ...  user  :  1});;
  • 97. 1  degree  of  longitude  at  the  equator:
  • 98. 1  degree  of  longitude  at  the  equator: 1  degree  of  longitude  near  the  poles:
  • 99. geospatial Eliot  @  10:15 Gateway  Room
  • 100. please  help   document  stuff! http://cookbook.mongodb.org
  • 101. want  to  work  on   mongodb? http://www.10gen.com/jobs
  • 102. thank  you! @kchodorow http://www.snailinaturtleneck.com