Your SlideShare is downloading. ×
0
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Mongodb railscamphh
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Mongodb railscamphh

1,002

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

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

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. on rails railscamp hamburg, 2010 jan krutisch <jan@krutisch.de> http://jan.krutisch.de/ Samstag, 23. Oktober 2010
  • 2. mongodb wtf? lol!? Samstag, 23. Oktober 2010
  • 3. document database Samstag, 23. Oktober 2010
  • 4. document database NoSQLincluded! Samstag, 23. Oktober 2010
  • 5. 10gen Samstag, 23. Oktober 2010
  • 6. open source http://github.com/mongodb/mongo Samstag, 23. Oktober 2010
  • 7. id title descr pos_lat pos_lng Samstag, 23. Oktober 2010
  • 8. { "_id" : ObjectId("4c00245062610475a005afcd"), "address" : "Bernstorffstr. 174n22767 HamburgnDE", "description" : null, "position" : { "lat" : 53.5600912, "lng" : 9.9596977 }, "tags" : [ "hausarzt", "naturheilverfahren", "akupunktur", "allgemeinmedizin" ], "title" : "Dr. med. Lilo Eisenbarth", "loxicon_id" : 808261 } Samstag, 23. Oktober 2010
  • 9. Samstag, 23. Oktober 2010
  • 10. ✗Samstag, 23. Oktober 2010
  • 11. Samstag, 23. Oktober 2010
  • 12. BSON Samstag, 23. Oktober 2010
  • 13. BInary Serialized jsON http://bsonspec.org/ Samstag, 23. Oktober 2010
  • 14. Wire Samstag, 23. Oktober 2010
  • 15. Storage Samstag, 23. Oktober 2010
  • 16. rich queries Samstag, 23. Oktober 2010
  • 17. conceptually close to SQL Samstag, 23. Oktober 2010
  • 18. easy to grasp Samstag, 23. Oktober 2010
  • 19. flexible Samstag, 23. Oktober 2010
  • 20. language integration Samstag, 23. Oktober 2010
  • 21. on top: map/reduce Samstag, 23. Oktober 2010
  • 22. Scaling Samstag, 23. Oktober 2010
  • 23. Master/Slave replication Samstag, 23. Oktober 2010
  • 24. Replica Sets (1.6) Samstag, 23. Oktober 2010
  • 25. Primary Member Member Samstag, 23. Oktober 2010
  • 26. Primary Member Primary Samstag, 23. Oktober 2010
  • 27. Member Member Primary Samstag, 23. Oktober 2010
  • 28. Autosharding (1.6) Samstag, 23. Oktober 2010
  • 29. Samstag, 23. Oktober 2010
  • 30. Durability Samstag, 23. Oktober 2010
  • 31. No single server durability! Samstag, 23. Oktober 2010
  • 32. fsyncs every 60s (configurable) Samstag, 23. Oktober 2010
  • 33. Use Replication! Samstag, 23. Oktober 2010
  • 34. Use write propagation locking Samstag, 23. Oktober 2010
  • 35. Single Server Durability planned for 1.8 Samstag, 23. Oktober 2010
  • 36. mongo console Samstag, 23. Oktober 2010
  • 37. $ mongo Samstag, 23. Oktober 2010
  • 38. > use test switched to db test db.quotes.save({ text: "You can observe a lot just by watching.", from: "Yogi Berra", created_at: new Date() }); db.quotes.save({ text: "Silence is one of the hardest arguments to refute.", from: "Josh Billings", created_at: new Date() }); Samstag, 23. Oktober 2010
  • 39. > use test switched to db test db.quotes.save({ text: "You can observe a lot just by watching.", from: "Yogi Berra", created_at: new Date() }); db.quotes.save({ text: "Silence is one of the hardest arguments to refute.", from: "Josh Billings", created_at: new Date() }); Samstag, 23. Oktober 2010
  • 40. Indexing Samstag, 23. Oktober 2010
  • 41. Same concept as with SQL databases Samstag, 23. Oktober 2010
  • 42. You want them Samstag, 23. Oktober 2010
  • 43. Same concept as with SQL databases Samstag, 23. Oktober 2010
  • 44. Sort order Samstag, 23. Oktober 2010
  • 45. Unique Samstag, 23. Oktober 2010
  • 46. Compound Samstag, 23. Oktober 2010
  • 47. Geospatial Samstag, 23. Oktober 2010
  • 48. map/reduce Samstag, 23. Oktober 2010
  • 49. we can haz it, too Samstag, 23. Oktober 2010
  • 50. function() { this.tags.forEach(function(z) { emit(z, {count: 1}); }); } Samstag, 23. Oktober 2010
  • 51. function(key, values) { var total = 0; values.forEach(function(v) { total += v.count }); return {count: total} } Samstag, 23. Oktober 2010
  • 52. (it‘s not fast...) Samstag, 23. Oktober 2010
  • 53. security Samstag, 23. Oktober 2010
  • 54. simple user/password auth Samstag, 23. Oktober 2010
  • 55. per database Samstag, 23. Oktober 2010
  • 56. read only is possible Samstag, 23. Oktober 2010
  • 57. one more thing Samstag, 23. Oktober 2010
  • 58. GridFS Samstag, 23. Oktober 2010
  • 59. Binary fields in BSON < 4MB Samstag, 23. Oktober 2010
  • 60. GridFS saves files in chunks Samstag, 23. Oktober 2010
  • 61. I‘m in u‘r rubies, querying teh MongoDB! Samstag, 23. Oktober 2010
  • 62. core driver Samstag, 23. Oktober 2010
  • 63. mongo / bson_ext Samstag, 23. Oktober 2010
  • 64. ODMs / Libs Samstag, 23. Oktober 2010
  • 65. mongo_mapper Samstag, 23. Oktober 2010
  • 66. mongoid Samstag, 23. Oktober 2010
  • 67. Find examples here: http://github.com/halfbyte/mongo_ruby_examples Samstag, 23. Oktober 2010
  • 68. Basic driver usage Samstag, 23. Oktober 2010
  • 69. init Samstag, 23. Oktober 2010
  • 70. require 'mongo' @connection = Mongo::Connection.new @db = @connection.db("test") Samstag, 23. Oktober 2010
  • 71. @connection = Mongo::Connection.new( 'localhost', 27017, :pool_size => 5, :timeout => 20 ) Samstag, 23. Oktober 2010
  • 72. @connection = Mongo::Connection.from_uri( "mongodb://localhost:27017/test" ) Samstag, 23. Oktober 2010
  • 73. insert/upsert Samstag, 23. Oktober 2010
  • 74. doc = { :text => "You can observe a lot just by watching.", :from => "Yogi Berra", :created_at => Time.now } @db['quotes'].insert(doc) Samstag, 23. Oktober 2010
  • 75. doc = @db['quotes'].find_one(id) doc[:from] = "Yogi Berra, famous baseball player" @db['quotes'].save(doc) Samstag, 23. Oktober 2010
  • 76. atomic updates Samstag, 23. Oktober 2010
  • 77. @db['quotes'].update( {"from" => "Yogi Berra"}, {"$inc" => {"reads" => 1 } } ) Samstag, 23. Oktober 2010
  • 78. @db['quotes'].update( {"from" => "Yogi Berra"}, {"$inc" => {"reads" => 1 } } ) Samstag, 23. Oktober 2010
  • 79. $inc $set $unset $push $pushAll $addToSet $pop $pull $pullAll $ Samstag, 23. Oktober 2010
  • 80. getting a whole collection Samstag, 23. Oktober 2010
  • 81. @db['quotes'].find.each do |row| puts row.inspect end Samstag, 23. Oktober 2010
  • 82. exact query Samstag, 23. Oktober 2010
  • 83. @db['quotes'].find(:from => "Yogi Berra") Samstag, 23. Oktober 2010
  • 84. more queries Samstag, 23. Oktober 2010
  • 85. 100.times do |i| db['numbers'].insert({"i" => i}) end Samstag, 23. Oktober 2010
  • 86. db['numbers'].find("i" => {"$lt" => 2}) Samstag, 23. Oktober 2010
  • 87. $lt < $gt > $lte <= $gte >= $ne != Samstag, 23. Oktober 2010
  • 88. @db['people'].find(:tags => {"$in" => ['cool']}) Samstag, 23. Oktober 2010
  • 89. obj = { "_id"=>BSON::ObjectID('4c706af16261040680000369'), "name"=>"Vernon Kreiger", "address"=>{ "street"=>"536 Haleigh Locks", "city"=>"Port Kiannahaven", "zip"=>"80730-0214", "country"=>"Fakistan" }, "tags"=>["cool", "weird"] } Samstag, 23. Oktober 2010
  • 90. obj = { "_id"=>BSON::ObjectID('4c706af16261040680000369'), "name"=>"Vernon Kreiger", "address"=>{ "street"=>"536 Haleigh Locks", "city"=>"Port Kiannahaven", "zip"=>"80730-0214", "country"=>"Fakistan" }, "tags"=>["cool", "weird"] } Samstag, 23. Oktober 2010
  • 91. $in IN (2,3,4) $nin NOT IN $all [2,3] ~ [1,2,3] Samstag, 23. Oktober 2010
  • 92. $mod yah, RLY $size okay $exists NOT NULL $type huh? Samstag, 23. Oktober 2010
  • 93. @db['people'].find("address.city" => /haven/) Samstag, 23. Oktober 2010
  • 94. @db['people'].find("address.city" => /haven/) Samstag, 23. Oktober 2010
  • 95. Sorting Samstag, 23. Oktober 2010
  • 96. @db['people'].find().sort("address.street") Samstag, 23. Oktober 2010
  • 97. @db['people'].find().sort("address.street") Samstag, 23. Oktober 2010
  • 98. Pagination Samstag, 23. Oktober 2010
  • 99. @db['numbers'].find.sort("i").limit(10) Samstag, 23. Oktober 2010
  • 100. @db['numbers'].find.sort("i").limit(10).skip(50) Samstag, 23. Oktober 2010
  • 101. Counting Samstag, 23. Oktober 2010
  • 102. @db['numbers'].find.count Samstag, 23. Oktober 2010
  • 103. Distinct Samstag, 23. Oktober 2010
  • 104. @db['people'].distinct('tags').inspect Samstag, 23. Oktober 2010
  • 105. Group Samstag, 23. Oktober 2010
  • 106. Poor mans map/reduce Samstag, 23. Oktober 2010
  • 107. @db['people'].group( ['created_at'], {}, {:tags => {}}, reduce, finalize ) Samstag, 23. Oktober 2010
  • 108. @db['people'].group( ['created_at'], {}, {:tags => {}}, reduce, finalize ) Samstag, 23. Oktober 2010
  • 109. @db['people'].group( ['created_at'], {}, {:tags => {}}, reduce, finalize ) Samstag, 23. Oktober 2010
  • 110. @db['people'].group( ['created_at'], {}, {:tags => {}}, reduce, finalize ) Samstag, 23. Oktober 2010
  • 111. @db['people'].group( ['created_at'], {}, {:tags => {}}, reduce, finalize ) Samstag, 23. Oktober 2010
  • 112. function(doc, prev) { for(i in doc.tags) { if (doc.tags[i] in prev.tags) { prev.tags[doc.tags[i]]++ } else { prev.tags[doc.tags[i]] =1 } } } Samstag, 23. Oktober 2010
  • 113. {"created_at"=>2010-09-19 22:00:00 UTC, "tags"=>{"foo"=>11.0, "dumb"=>12.0, "stupid"=>7.0, "bar"=>7.0, "cool"=>14.0, "weird"=>17.0}} {"created_at"=>2010-09-20 22:00:00 UTC, "tags"=>{"dumb"=>11.0, "stupid"=>5.0, "foo"=>10.0, "cool"=>8.0, "weird"=>9.0, "bar"=>15.0}} {"created_at"=>2010-09-22 22:00:00 UTC, "tags"=>{"weird"=>15.0, "bar"=>9.0, "stupid"=>17.0, "cool"=>11.0, "dumb"=>10.0, "foo"=>12.0}} {"created_at"=>2010-09-15 22:00:00 UTC, "tags"=>{"foo"=>11.0, "weird"=>7.0, "stupid"=>10.0, "cool"=>11.0, "bar"=>5.0, "dumb"=>8.0}} {"created_at"=>2010-09-25 22:00:00 UTC, "tags"=>{"dumb"=>11.0, "weird"=>14.0, "cool"=>8.0, "foo"=>21.0, "bar"=>11.0, "stupid"=>13.0}} {"created_at"=>2010-09-28 22:00:00 UTC, "tags"=>{"cool"=>11.0, "dumb"=>16.0, "stupid"=>11.0, "weird"=>15.0, "foo"=>9.0, "bar"=>16.0}} {"created_at"=>2010-09-10 22:00:00 UTC, "tags"=>{"dumb"=>15.0, "weird"=>9.0, "bar"=>8.0, "cool"=>14.0, "stupid"=>11.0, "foo"=>11.0}} {"created_at"=>2010-09-03 22:00:00 UTC, "tags"=>{"weird"=>14.0, "dumb"=>15.0, "stupid"=>11.0, "foo"=>16.0, "bar"=>20.0, "cool"=>10.0}} {"created_at"=>2010-09-21 22:00:00 UTC, "tags"=>{"weird"=>15.0, "cool"=>14.0, "foo"=>13.0, "stupid"=>6.0, "bar"=>11.0, "dumb"=>9.0}} {"created_at"=>2010-09-23 22:00:00 UTC, "tags"=>{"weird"=>15.0, "stupid"=>15.0, "dumb"=>15.0, "foo"=>16.0, "cool"=>10.0, "bar"=>11.0}} {"created_at"=>2010-09-29 22:00:00 UTC, "tags"=>{"bar"=>9.0, "cool"=>14.0, "weird"=>16.0, "foo"=>8.0, "dumb"=>9.0, "stupid"=>12.0}} {"created_at"=>2010-09-27 22:00:00 UTC, "tags"=>{"cool"=>13.0, "dumb"=>10.0, "stupid"=>12.0, "bar"=>8.0, "foo"=>16.0, "weird"=>13.0}} {"created_at"=>2010-09-04 22:00:00 UTC, "tags"=>{"cool"=>11.0, "bar"=>9.0, "stupid"=>6.0, "weird"=>11.0, "dumb"=>8.0, "foo"=>11.0}} {"created_at"=>2010-09-08 22:00:00 UTC, "tags"=>{"stupid"=>12.0, "dumb"=>11.0, "cool"=>15.0, "foo"=>11.0, "bar"=>9.0, "weird"=>8.0}} {"created_at"=>2010-10-02 22:00:00 UTC, "tags"=>{"bar"=>8.0, "dumb"=>8.0, "cool"=>10.0, "foo"=>10.0, "stupid"=>8.0, "weird"=>6.0}} {"created_at"=>2010-09-24 22:00:00 UTC, "tags"=>{"foo"=>13.0, "bar"=>12.0, "stupid"=>15.0, "weird"=>17.0, "dumb"=>7.0, "cool"=>10.0}} {"created_at"=>2010-09-30 22:00:00 UTC, "tags"=>{"bar"=>10.0, "cool"=>6.0, "stupid"=>14.0, "weird"=>9.0, "dumb"=>12.0, "foo"=>19.0}} {"created_at"=>2010-09-05 22:00:00 UTC, "tags"=>{"dumb"=>12.0, "foo"=>19.0, "weird"=>8.0, "stupid"=>8.0, "bar"=>7.0, "cool"=>10.0}} {"created_at"=>2010-09-17 22:00:00 UTC, "tags"=>{"weird"=>13.0, "bar"=>14.0, "dumb"=>12.0, "foo"=>12.0, "stupid"=>10.0, "cool"=>9.0}} {"created_at"=>2010-09-18 22:00:00 UTC, "tags"=>{"dumb"=>8.0, "cool"=>11.0, "foo"=>6.0, "bar"=>12.0, "weird"=>7.0, "stupid"=>6.0}} {"created_at"=>2010-09-09 22:00:00 UTC, "tags"=>{"weird"=>11.0, "dumb"=>9.0, "foo"=>6.0, "bar"=>11.0, "cool"=>11.0, "stupid"=>6.0}} {"created_at"=>2010-09-13 22:00:00 UTC, "tags"=>{"dumb"=>19.0, "stupid"=>9.0, "weird"=>12.0, "cool"=>11.0, "bar"=>10.0, "foo"=>15.0}} {"created_at"=>2010-09-16 22:00:00 UTC, "tags"=>{"bar"=>6.0, "weird"=>8.0, "dumb"=>9.0, "cool"=>11.0, "stupid"=>17.0, "foo"=>15.0}} {"created_at"=>2010-09-11 22:00:00 UTC, "tags"=>{"foo"=>10.0, "weird"=>9.0, "bar"=>8.0, "cool"=>4.0, "dumb"=>8.0, "stupid"=>9.0}} {"created_at"=>2010-09-26 22:00:00 UTC, "tags"=>{"dumb"=>15.0, "weird"=>6.0, "stupid"=>15.0, "bar"=>10.0, "foo"=>13.0, "cool"=>15.0}} {"created_at"=>2010-10-01 22:00:00 UTC, "tags"=>{"cool"=>7.0, "weird"=>11.0, "stupid"=>11.0, "bar"=>14.0, "foo"=>12.0, "dumb"=>11.0}} {"created_at"=>2010-09-12 22:00:00 UTC, "tags"=>{"bar"=>7.0, "weird"=>12.0, "stupid"=>11.0, "cool"=>10.0, "foo"=>11.0, "dumb"=>9.0}} {"created_at"=>2010-09-14 22:00:00 UTC, "tags"=>{"dumb"=>8.0, "foo"=>15.0, "cool"=>15.0, "stupid"=>15.0, "bar"=>7.0, "weird"=>14.0}} {"created_at"=>2010-09-07 22:00:00 UTC, "tags"=>{"dumb"=>10.0, "cool"=>7.0, "foo"=>14.0, "weird"=>15.0, "bar"=>11.0, "stupid"=>7.0}} {"created_at"=>2010-09-06 22:00:00 UTC, "tags"=>{"dumb"=>7.0, "bar"=>11.0, "cool"=>16.0, "weird"=>14.0, "foo"=>12.0, "stupid"=>6.0}} Samstag, 23. Oktober 2010
  • 114. {"created_at"=>2010-09-19 22:00:00 UTC, "tags"=>{"foo"=>11.0, "dumb"=>12.0, "stupid"=>7.0, "bar"=>7.0, "cool"=>14.0, "weird"=>17.0}} {"created_at"=>2010-09-20 22:00:00 UTC, "tags"=>{"dumb"=>11.0, "stupid"=>5.0, "foo"=>10.0, "cool"=>8.0, "weird"=>9.0, "bar"=>15.0}} {"created_at"=>2010-09-22 22:00:00 UTC, "tags"=>{"weird"=>15.0, "bar"=>9.0, "stupid"=>17.0, "cool"=>11.0, "dumb"=>10.0, "foo"=>12.0}} {"created_at"=>2010-09-15 22:00:00 UTC, "tags"=>{"foo"=>11.0, "weird"=>7.0, "stupid"=>10.0, "cool"=>11.0, "bar"=>5.0, "dumb"=>8.0}} {"created_at"=>2010-09-25 22:00:00 UTC, "tags"=>{"dumb"=>11.0, "weird"=>14.0, "cool"=>8.0, "foo"=>21.0, "bar"=>11.0, "stupid"=>13.0}} {"created_at"=>2010-09-28 22:00:00 UTC, "tags"=>{"cool"=>11.0, "dumb"=>16.0, "stupid"=>11.0, "weird"=>15.0, "foo"=>9.0, "bar"=>16.0}} {"created_at"=>2010-09-10 22:00:00 UTC, "tags"=>{"dumb"=>15.0, "weird"=>9.0, "bar"=>8.0, "cool"=>14.0, "stupid"=>11.0, "foo"=>11.0}} {"created_at"=>2010-09-03 22:00:00 UTC, "tags"=>{"weird"=>14.0, "dumb"=>15.0, "stupid"=>11.0, "foo"=>16.0, "bar"=>20.0, "cool"=>10.0}} {"created_at"=>2010-09-21 22:00:00 UTC, "tags"=>{"weird"=>15.0, "cool"=>14.0, "foo"=>13.0, "stupid"=>6.0, "bar"=>11.0, "dumb"=>9.0}} {"created_at"=>2010-09-23 22:00:00 UTC, "tags"=>{"weird"=>15.0, "stupid"=>15.0, "dumb"=>15.0, "foo"=>16.0, "cool"=>10.0, "bar"=>11.0}} {"created_at"=>2010-09-29 22:00:00 UTC, "tags"=>{"bar"=>9.0, "cool"=>14.0, "weird"=>16.0, "foo"=>8.0, "dumb"=>9.0, "stupid"=>12.0}} {"created_at"=>2010-09-27 22:00:00 UTC, "tags"=>{"cool"=>13.0, "dumb"=>10.0, "stupid"=>12.0, "bar"=>8.0, "foo"=>16.0, "weird"=>13.0}} {"created_at"=>2010-09-04 22:00:00 UTC, "tags"=>{"cool"=>11.0, "bar"=>9.0, "stupid"=>6.0, "weird"=>11.0, "dumb"=>8.0, "foo"=>11.0}} {"created_at"=>2010-09-08 22:00:00 UTC, "tags"=>{"stupid"=>12.0, "dumb"=>11.0, "cool"=>15.0, "foo"=>11.0, "bar"=>9.0, "weird"=>8.0}} {"created_at"=>2010-10-02 22:00:00 UTC, "tags"=>{"bar"=>8.0, "dumb"=>8.0, "cool"=>10.0, "foo"=>10.0, "stupid"=>8.0, "weird"=>6.0}} {"created_at"=>2010-09-24 22:00:00 UTC, "tags"=>{"foo"=>13.0, "bar"=>12.0, "stupid"=>15.0, "weird"=>17.0, "dumb"=>7.0, "cool"=>10.0}} {"created_at"=>2010-09-30 22:00:00 UTC, "tags"=>{"bar"=>10.0, "cool"=>6.0, "stupid"=>14.0, "weird"=>9.0, "dumb"=>12.0, "foo"=>19.0}} {"created_at"=>2010-09-05 22:00:00 UTC, "tags"=>{"dumb"=>12.0, "foo"=>19.0, "weird"=>8.0, "stupid"=>8.0, "bar"=>7.0, "cool"=>10.0}} {"created_at"=>2010-09-17 22:00:00 UTC, "tags"=>{"weird"=>13.0, "bar"=>14.0, "dumb"=>12.0, "foo"=>12.0, "stupid"=>10.0, "cool"=>9.0}} {"created_at"=>2010-09-18 22:00:00 UTC, "tags"=>{"dumb"=>8.0, "cool"=>11.0, "foo"=>6.0, "bar"=>12.0, "weird"=>7.0, "stupid"=>6.0}} {"created_at"=>2010-09-09 22:00:00 UTC, "tags"=>{"weird"=>11.0, "dumb"=>9.0, "foo"=>6.0, "bar"=>11.0, "cool"=>11.0, "stupid"=>6.0}} {"created_at"=>2010-09-13 22:00:00 UTC, "tags"=>{"dumb"=>19.0, "stupid"=>9.0, "weird"=>12.0, "cool"=>11.0, "bar"=>10.0, "foo"=>15.0}} {"created_at"=>2010-09-16 22:00:00 UTC, "tags"=>{"bar"=>6.0, "weird"=>8.0, "dumb"=>9.0, "cool"=>11.0, "stupid"=>17.0, "foo"=>15.0}} {"created_at"=>2010-09-11 22:00:00 UTC, "tags"=>{"foo"=>10.0, "weird"=>9.0, "bar"=>8.0, "cool"=>4.0, "dumb"=>8.0, "stupid"=>9.0}} {"created_at"=>2010-09-26 22:00:00 UTC, "tags"=>{"dumb"=>15.0, "weird"=>6.0, "stupid"=>15.0, "bar"=>10.0, "foo"=>13.0, "cool"=>15.0}} {"created_at"=>2010-10-01 22:00:00 UTC, "tags"=>{"cool"=>7.0, "weird"=>11.0, "stupid"=>11.0, "bar"=>14.0, "foo"=>12.0, "dumb"=>11.0}} {"created_at"=>2010-09-12 22:00:00 UTC, "tags"=>{"bar"=>7.0, "weird"=>12.0, "stupid"=>11.0, "cool"=>10.0, "foo"=>11.0, "dumb"=>9.0}} {"created_at"=>2010-09-14 22:00:00 UTC, "tags"=>{"dumb"=>8.0, "foo"=>15.0, "cool"=>15.0, "stupid"=>15.0, "bar"=>7.0, "weird"=>14.0}} {"created_at"=>2010-09-07 22:00:00 UTC, "tags"=>{"dumb"=>10.0, "cool"=>7.0, "foo"=>14.0, "weird"=>15.0, "bar"=>11.0, "stupid"=>7.0}} {"created_at"=>2010-09-06 22:00:00 UTC, "tags"=>{"dumb"=>7.0, "bar"=>11.0, "cool"=>16.0, "weird"=>14.0, "foo"=>12.0, "stupid"=>6.0}} "tags" => { "foo" => 11.0, "dumb" => 12.0, "stupid" => 7.0, "bar" => 7.0, "cool" => 14.0, "weird" => 17.0 } Samstag, 23. Oktober 2010
  • 115. function(prev) { var mostPopular = 0; for(i in prev.tags) { if(prev.tags[i] > mostPopular) { prev.tag = i; prev.count = prev.tags[i]; mostPopular = prev.tags[i]; } } delete prev.tags } Samstag, 23. Oktober 2010
  • 116. {"created_at"=>2010-09-27 22:00:00 UTC, "tag"=>"stupid", "count"=>18.0} {"created_at"=>2010-09-29 22:00:00 UTC, "tag"=>"stupid", "count"=>20.0} {"created_at"=>2010-09-12 22:00:00 UTC, "tag"=>"cool", "count"=>11.0} {"created_at"=>2010-09-04 22:00:00 UTC, "tag"=>"stupid", "count"=>12.0} {"created_at"=>2010-09-21 22:00:00 UTC, "tag"=>"stupid", "count"=>16.0} {"created_at"=>2010-09-03 22:00:00 UTC, "tag"=>"foo", "count"=>15.0} {"created_at"=>2010-09-26 22:00:00 UTC, "tag"=>"foo", "count"=>17.0} {"created_at"=>2010-09-18 22:00:00 UTC, "tag"=>"foo", "count"=>17.0} {"created_at"=>2010-09-24 22:00:00 UTC, "tag"=>"cool", "count"=>11.0} Samstag, 23. Oktober 2010
  • 117. Map / Reduce Samstag, 23. Oktober 2010
  • 118. map = <<-END function() { this.tags.forEach(function(z) { emit(z, {count: 1}); }); } END reduce = <<-END function(key, values) { var total = 0; values.forEach(function(v) { total += v.count }); return {count: total} } END collection = @db['people'].map_reduce( map, reduce ) Samstag, 23. Oktober 2010
  • 119. Indexes Samstag, 23. Oktober 2010
  • 120. db['people'].create_index("tags") @db['people'].create_index( [["tags", Mongo::ASCENDING]] ) db['people'].drop_index("tags_1") db['people'].drop_indexes db['people'].index_information Samstag, 23. Oktober 2010
  • 121. Geospatial stuff Samstag, 23. Oktober 2010
  • 122. @db['people'].create_index( [["latlng", Mongo::GEO2D]] ) Samstag, 23. Oktober 2010
  • 123. @db['people'].find( "latlng" => {"$near" => [53.593978, 10.107380]} ) Samstag, 23. Oktober 2010
  • 124. GridFS usage Samstag, 23. Oktober 2010
  • 125. grid = Mongo::Grid.new(@db) id = grid.put("You can put Strings in here", :filename => 'test.txt') file = grid.get(id) file.filename file.read grid.delete(id) grid.put( File.open("/Users/jankrutisch/Dropbox/Photos/IMGP8989.jpg") ) Samstag, 23. Oktober 2010
  • 126. fs = Mongo::GridFileSystem.new(db) fs.open("test.txt", "w") do |f| f.write "You can put stuff in here" end fs.open("test.txt", "r") do |f| puts f.read end fs.delete("test.txt") Samstag, 23. Oktober 2010
  • 127. Capped collections Samstag, 23. Oktober 2010
  • 128. @db.create_collection('capped_numbers', :capped => true, :max => 50 ) @db.create_collection('capped_numbers', :capped => true, :size => 1024 * 64 ) Samstag, 23. Oktober 2010
  • 129. explain Samstag, 23. Oktober 2010
  • 130. @db['people'].find( "address.city" => /haven/ ).explain Samstag, 23. Oktober 2010
  • 131. @db['people'].find( "address.city" => /haven/ ).explain Samstag, 23. Oktober 2010
  • 132. { "cursor"=>"BasicCursor", "nscanned"=>1000, "nscannedObjects"=>1000, "n"=>39, "millis"=>2, "indexBounds"=>{}, "allPlans"=>[ {"cursor"=>"BasicCursor", "indexBounds"=>{}} ] } Samstag, 23. Oktober 2010
  • 133. { "cursor"=>"BtreeCursor address.city_1 multi", "nscanned"=>1000, "nscannedObjects"=>39, "n"=>39, "millis"=>1, "indexBounds"=>{ "address.city"=>[["", {}], [/haven/, /haven/]] }, "allPlans"=>[ { "cursor"=>"BtreeCursor address.city_1 multi", "indexBounds"=>{ "address.city"=>[["", {}], [/haven/, /haven/]] } } ] } Samstag, 23. Oktober 2010
  • 134. ODMs Samstag, 23. Oktober 2010
  • 135. mongo_mapper Samstag, 23. Oktober 2010
  • 136. John Nunemaker @jnunemaker Samstag, 23. Oktober 2010
  • 137. is in production Samstag, 23. Oktober 2010
  • 138. documentation? Samstag, 23. Oktober 2010
  • 139. Samstag, 23. Oktober 2010
  • 140. how to Samstag, 23. Oktober 2010
  • 141. rails initializer Samstag, 23. Oktober 2010
  • 142. # config/initializers/mongo_mapper.rb File.open(File.join(Rails.root, 'config/mongodb.yml'), 'r') do |f| @settings = YAML.load(f)[Rails.env] end MongoMapper.connection = Mongo::Connection.from_uri(@settings["connection"]) if @settings["connection"] MongoMapper.database = @settings["database"] Samstag, 23. Oktober 2010
  • 143. a simple example Samstag, 23. Oktober 2010
  • 144. MongoMapper.connection = @connection MongoMapper.database = "test" class Quote include MongoMapper::Document key :from key :text key :views, Integer timestamps! end Samstag, 23. Oktober 2010
  • 145. finders Samstag, 23. Oktober 2010
  • 146. Quote.where(:from => 'Yogi Berra').all Quote.where(:from => 'Yogi Berra').limit(5).sort(:from.desc).all Samstag, 23. Oktober 2010
  • 147. embedded docs Samstag, 23. Oktober 2010
  • 148. Samstag, 23. Oktober 2010
  • 149. class Person include MongoMapper::Document key :name one :address key :tags, Array end class Address include MongoMapper::Document key :street key :city key :country key :zip end Samstag, 23. Oktober 2010
  • 150. person = Person.first address = Person.first.address Samstag, 23. Oktober 2010
  • 151. scopes Samstag, 23. Oktober 2010
  • 152. class Person scope :tagged, lambda { |tag| where(:tags.in => [tag]) } end puts Person.tagged('cool').first.inspect Samstag, 23. Oktober 2010
  • 153. new website coming soon Samstag, 23. Oktober 2010
  • 154. mongoid Samstag, 23. Oktober 2010
  • 155. Durran Jordan (of Hashrocket) Samstag, 23. Oktober 2010
  • 156. Two major versions Samstag, 23. Oktober 2010
  • 157. 1.x (1.9.x) targeting Rails 2.3.x Samstag, 23. Oktober 2010
  • 158. 2.x (2.0beta) targeting Rails 3.0 Samstag, 23. Oktober 2010
  • 159. Good documentation Samstag, 23. Oktober 2010
  • 160. Samstag, 23. Oktober 2010
  • 161. rails initializer Samstag, 23. Oktober 2010
  • 162. File.open(File.join(RAILS_ROOT, 'config/mongodb.yml'), 'r') do |f| @settings = YAML.load(f)[RAILS_ENV] end Mongoid::Config.instance.from_hash(@settings) Samstag, 23. Oktober 2010
  • 163. a simple example Samstag, 23. Oktober 2010
  • 164. class Quote include Mongoid::Document include Mongoid::Timestamps field :from field :text field :views, :type => Integer end Samstag, 23. Oktober 2010
  • 165. finders Samstag, 23. Oktober 2010
  • 166. Quote.where(:from => 'Yogi Berra').all Quote.where(:from => 'Yogi Berra').limit(5).order_by(:from.desc).all Samstag, 23. Oktober 2010
  • 167. embedded docs Samstag, 23. Oktober 2010
  • 168. class Person include Mongoid::Document field :name embeds_one :address field :tags, :type => Array end class Address include Mongoid::Document field :street field :city field :country field :zip end Samstag, 23. Oktober 2010
  • 169. person = Person.first address = Person.first.address Samstag, 23. Oktober 2010
  • 170. scopes Samstag, 23. Oktober 2010
  • 171. class Person scope :tagged, lambda { |tag| where(:tags.in => [tag]) } end puts Person.tagged('cool').first.inspect Samstag, 23. Oktober 2010
  • 172. More features Samstag, 23. Oktober 2010
  • 173. atomic updates Samstag, 23. Oktober 2010
  • 174. mongoid tries to be clever Samstag, 23. Oktober 2010
  • 175. (using the „dirty“ flags) Samstag, 23. Oktober 2010
  • 176. (it‘s probably better to bypass the ODM sometimes) Samstag, 23. Oktober 2010
  • 177. GridFS Samstag, 23. Oktober 2010
  • 178. external libraries for both Samstag, 23. Oktober 2010
  • 179. mongo_mapper > grip Samstag, 23. Oktober 2010
  • 180. mongoid > mongoid_grid Samstag, 23. Oktober 2010
  • 181. Other noteworthy libraries Samstag, 23. Oktober 2010
  • 182. Other not so noteworthy libraries Samstag, 23. Oktober 2010
  • 183. I ♥ Samstag, 23. Oktober 2010
  • 184. thanks for listening. ‣ jan@krutisch.de ‣ http://jan.krutisch.de/ ‣ http://github.com/halfbyte/ ‣ http://twitter.com/halfbyte ‣ http://www.mindmatters.de/ ‣ http://www.mongodb.org/ ‣ http://www.mongoid.org/ ‣ http://github.com/jnunemaker/mongo_mapper ‣ http://github.com/halfbyte/mongo_ruby_examples Samstag, 23. Oktober 2010

×