Your SlideShare is downloading. ×
0
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
MongoDB com a Turma do Chaves
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 com a Turma do Chaves

34,059

Published on

Meu primeiro workshop foi bem irado. …

Meu primeiro workshop foi bem irado.

A explicação sobre MapReduce foi no quadro branco, não nos slides. :}

Qualquer dúvida, me pergunte!

PS: a expressão regular dos alunos que começam com a letra C está errada. O certo é /^C/.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
34,059
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
50
Comments
0
Likes
2
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. com a Turma do Chaves Por @PedroMenezes PedroMenezes.com
  • 2. Planejamento <ul><li>Professor Girafales explica MongoDB
  • 3. Professor Girafales explica como abrir o MongoDB
  • 4. Sistema da escola via MongoDB </li></ul>
  • 5. O que é o MongoDB, professor Girafales? <ul>Ele é um banco de dados diferente dos habituais, crianças. O MongoDB é... </ul>
  • 6. <ul><ul><li>Baseado em documentos
  • 7. (armazena em BSON , um formato de JSON
  • 8. que suporta binários e outras coisas)
  • 9. Por essa razão, seu schema é flexível .
  • 10. É possível criar propriedades
  • 11. para documentos individualmente </li></ul></ul>
  • 12. Ele é bom pra que? <ul><ul><li>Estatísticas em tempo real,
  • 13. pois tem uns truques para que
  • 14. inserts e updates parecerem
  • 15. ser mais rápidos.
  • 16. Cache ”persistente” e rápido com
  • 17. Capped Collections (coleções de tamanho fixo).
  • 18. Bom pra logging também,
  • 19. pois mantém ordem de inserção de objetos.
  • 20. ” High volume, low value data”
  • 21. Guardar objetos grandes distribuídos em
  • 22. pedaços com o GridFS. </li></ul></ul>
  • 23. Quem usa o MongoDB, professor? <ul><ul><li>O pessoal do Github, SourceForge,
  • 24. EA, NY Times, DISQUS,
  • 25. Justin.tv e outros. </li></ul></ul>
  • 26. Onde a gente pode baixar o MongoDB? <ul>QUEM FALOU QUE VOCÊS PODEM BAIXAR O MONGO? http://www.mongodb.org e depois em Downloads </ul>
  • 27. E pra rodar? <ul>Descompacte e navegue até a pasta bin. &gt; sudo ./mongod # pra abrir o daemon &gt; ./mongo # pra abrir o client Caso dê problemas pra abrir o daemon, execute: sudo mkdir -p /data/db </ul>
  • 28. Cadastrando alunos <ul><li>&gt; db.alunos. save ( {
  • 29. nome: &amp;quot;Chaves&amp;quot;,
  • 30. idade: 8,
  • 31. armario: [&amp;quot;Sandwich de presunto&amp;quot;, &amp;quot;Foto da Popis&amp;quot;]
  • 32. } )
  • 33. &gt; db.alunos.save({nome: &amp;quot;Chiquinha&amp;quot;, idade: 8, armario: [&amp;quot;Boneca de pano&amp;quot;]})
  • 34. &gt; db.alunos.save({nome: &amp;quot;Kiko&amp;quot;, idade: 9})
  • 35. &gt; db.alunos.save({nome: &amp;quot;Nhonho&amp;quot;, idade: 9}) </li></ul><ul><li>A collection é criada na inserção
  • 36. do primeiro elemento.
  • 37. Note que o Kiko e o Nhonho
  • 38. não possuem ítens no armário. </li></ul>
  • 39. Mostrando os alunos em ordem alfabética <ul><li>&gt; db.alunos.find(). sort({name: 1})
  • 40. {
  • 41. &amp;quot;_id&amp;quot;: ObjectId(&amp;quot;4b7c3341ca4fb4692dd91c54&amp;quot;) ,
  • 42. &amp;quot;nome&amp;quot;: &amp;quot; Chaves &amp;quot;,
  • 43. &amp;quot;idade&amp;quot;: 8,
  • 44. &amp;quot;armario&amp;quot;: [&amp;quot;Sandwich de presunto&amp;quot;, &amp;quot;Foto da Popis&amp;quot;]
  • 45. }
  • 46. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c335aca4fb4692dd91c55&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Chiquinha &amp;quot; , &amp;quot;idade&amp;quot; : 8 , &amp;quot;armario&amp;quot; : [&amp;quot;Boneca de pano&amp;quot;]}
  • 47. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c3373ca4fb4692dd91c56&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Kiko &amp;quot; , &amp;quot;idade&amp;quot; : 9}
  • 48. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c337dca4fb4692dd91c57&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Nhonho &amp;quot; , &amp;quot;idade&amp;quot; : 9} </li></ul>
  • 49. Mostrando somente nomes dos alunos em ordem alfabética <ul><li>&gt; db.alunos.find({}, {nome: 1} ).sort({nome: 1})
  • 50. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c3341ca4fb4692dd91c54&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Chaves &amp;quot;}
  • 51. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c335aca4fb4692dd91c55&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Chiquinha &amp;quot;}
  • 52. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c3373ca4fb4692dd91c56&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Kiko &amp;quot;}
  • 53. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c337dca4fb4692dd91c57&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Nhonho &amp;quot;} </li></ul>
  • 54. Mostrando os alunos em ordem alfabética inversa <ul><li>&gt; db.alunos.find() .sort({nome: -1})
  • 55. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c337dca4fb4692dd91c57&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Nhonho &amp;quot; , &amp;quot;idade&amp;quot; : 9}
  • 56. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c3373ca4fb4692dd91c56&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Kiko &amp;quot; , &amp;quot;idade&amp;quot; : 9}
  • 57. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c3341ca4fb4692dd91c54&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Chaves &amp;quot; , &amp;quot;idade&amp;quot; : 8 , &amp;quot;armario&amp;quot; : [&amp;quot;Sandwich de presunto&amp;quot;,&amp;quot;Foto da Popis&amp;quot;]}
  • 58. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c335aca4fb4692dd91c55&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Chiquinha &amp;quot; , &amp;quot;idade&amp;quot; : 8 , &amp;quot;armario&amp;quot; : [&amp;quot;Boneca de pano&amp;quot;]} </li></ul>
  • 59. Mostrar alunos em ordem alfabética exceto o primeiro <ul><li>&gt; db.alunos.find().sort({nome: 1}) .skip(1)
  • 60. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c335aca4fb4692dd91c55&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Chiquinha &amp;quot; , &amp;quot;idade&amp;quot; : 8 , &amp;quot;armario&amp;quot; : [&amp;quot;Boneca de pano&amp;quot;]}
  • 61. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c3373ca4fb4692dd91c56&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Kiko &amp;quot; , &amp;quot;idade&amp;quot; : 9}
  • 62. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c337dca4fb4692dd91c57&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Nhonho &amp;quot; , &amp;quot;idade&amp;quot; : 9 </li></ul>
  • 63. <ul><li>Mostrar 2 alunos em ordem alfabética exceto o primeiro </li></ul><ul><li>&gt; db.alunos.find().sort({nome: 1}).skip(1) .limit(2)
  • 64. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c335aca4fb4692dd91c55&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Chiquinha &amp;quot; , &amp;quot;idade&amp;quot; : 8 , &amp;quot;armario&amp;quot; : [&amp;quot;Boneca de pano&amp;quot;]}
  • 65. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c3373ca4fb4692dd91c56&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Kiko &amp;quot; , &amp;quot;idade&amp;quot; : 9} </li></ul>
  • 66. Mostrando alunos com nome começando com a letra C <ul><li>&gt; db.alunos.find({nome: /^C/ })
  • 67. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c3341ca4fb4692dd91c54&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Chaves &amp;quot; , &amp;quot;idade&amp;quot; : 8 , &amp;quot;armario&amp;quot; : [&amp;quot;Sandwich de presunto&amp;quot;,&amp;quot;Foto da Popis&amp;quot;]}
  • 68. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c335aca4fb4692dd91c55&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Chiquinha &amp;quot; , &amp;quot;idade&amp;quot; : 8 , &amp;quot;armario&amp;quot; : [&amp;quot;Boneca de pano&amp;quot;]} </li></ul>
  • 69. Mostrar somente um documento: o do Chaves <ul><li>&gt; db.alunos. findOne ({ nome: &amp;quot; Chaves &amp;quot;})
  • 70. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c3341ca4fb4692dd91c54&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot; Chaves &amp;quot; , &amp;quot;idade&amp;quot; : 8 , &amp;quot;armario&amp;quot; : [&amp;quot;Sandwich de presunto&amp;quot;,&amp;quot;Foto da Popis&amp;quot;]} </li></ul>
  • 71. <ul><li>Mostrar somente documentos do Chaves e Kiko </li></ul><ul><li>&gt; db.alunos.find({ nome: { $in: [&amp;quot;Chaves&amp;quot;, &amp;quot;Kiko&amp;quot;]} })
  • 72. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c3341ca4fb4692dd91c54&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot;Chaves&amp;quot; , &amp;quot;idade&amp;quot; : 8 , &amp;quot;armario&amp;quot; : [&amp;quot;Sandwich de presunto&amp;quot;,&amp;quot;Foto da Popis&amp;quot;]}
  • 73. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c3373ca4fb4692dd91c56&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot;Kiko&amp;quot; , &amp;quot;idade&amp;quot; : 9} </li></ul>Cola: condicional operators
  • 74. Mostrar alunos com Boneca de pano no armário <ul><li>&gt; db.alunos.find({ armario: &amp;quot;Boneca de pano&amp;quot; })
  • 75. {&amp;quot;_id&amp;quot; : ObjectId( &amp;quot;4b7c335aca4fb4692dd91c55&amp;quot;) , &amp;quot;nome&amp;quot; : &amp;quot;Chiquinha&amp;quot; , &amp;quot;idade&amp;quot; : 8 , &amp;quot;armario&amp;quot; : [&amp;quot;Boneca de pano&amp;quot;]} </li></ul>
  • 76. Mostrar o total de alunos <ul><li>&gt; db.alunos. count()
  • 77. 4 </li></ul>
  • 78. <ul><li>Mostrar o total de alunos com nome começando com a letra C </li></ul><ul><li>&gt; db.alunos.find({nome: /C/}) .count()
  • 79. ou
  • 80. &gt; db.alunos .count({nome: /C/})
  • 81. 2 </li></ul>
  • 82. <ul><li>Deletando um aluno </li></ul><ul><li>&gt; db.alunos .remove({nome: &amp;quot;Kiko&amp;quot;}) </li></ul>
  • 83. <ul><li>Adicionando um elemento em um array </li></ul><ul><li>&gt; db.alunos. update ({nome: &amp;quot;Chaves&amp;quot;}, {$push: {materias: {materia: &amp;quot;Matemática&amp;quot;, notas: [7, 5, 7]}} })
  • 84. &gt; db.alunos. update ({nome: &amp;quot;Chaves&amp;quot;}, {$push: {materias: {materia: &amp;quot;Inglês&amp;quot;, notas: [8, 9, 9.5]}} })
  • 85. &gt; db.alunos.findOne({ nome: &amp;quot;Chaves&amp;quot;})
  • 86. {
  • 87. &amp;quot;_id&amp;quot;: ObjectId(&amp;quot;4b7c3d34ca4fb4692dd91c5b&amp;quot;),
  • 88. &amp;quot;nome&amp;quot;: &amp;quot;Chaves&amp;quot;,
  • 89. &amp;quot;idade&amp;quot;: 9,
  • 90. &amp;quot;armario&amp;quot;: [&amp;quot;Sandwich de presunto&amp;quot;, &amp;quot;Foto da Popis&amp;quot;],
  • 91. &amp;quot;materias&amp;quot;: [{
  • 92. &amp;quot;materia&amp;quot;: &amp;quot;Matemática&amp;quot;,
  • 93. &amp;quot;notas&amp;quot;: [7, 5, 7]
  • 94. },
  • 95. {
  • 96. &amp;quot;materia&amp;quot;: &amp;quot;Inglês&amp;quot;,
  • 97. &amp;quot;notas&amp;quot;: [8, 9, 9.5]
  • 98. }]
  • 99. } </li></ul>Cola: modifier operators
  • 100. Adicionando mais de um elemento em um array <ul><li>&gt; db.alunos.update({nome: &amp;quot;Nhonho&amp;quot;}, {$pushAll: {materias: [ {materia: &amp;quot;Matemática&amp;quot;, notas: [9, 9, 8.5]}, {materia: &amp;quot;Inglês&amp;quot;, notas: [9, 9.5, 10]} ]}})
  • 101. &gt; db.alunos.update({
  • 102. nome: &amp;quot;Chiquinha&amp;quot;
  • 103. }, {
  • 104. $pushAll: {
  • 105. materias: [{
  • 106. materia: &amp;quot;Matemática&amp;quot;,
  • 107. notas: [5, 5, 6.5]
  • 108. },
  • 109. {
  • 110. materia: &amp;quot;Inglês&amp;quot;,
  • 111. notas: [6, 6, 5.5]
  • 112. }]
  • 113. }
  • 114. }) </li></ul>
  • 115. <ul><li>Aumentar um número </li></ul><ul><li>&gt; db.alunos.update({
  • 116. nome: &amp;quot;Chaves&amp;quot;
  • 117. }, {
  • 118. $inc : {
  • 119. idade : 1
  • 120. }
  • 121. }) </li></ul>
  • 122. <ul><li>Listar os alunos usando JavaScript </li></ul><ul><li>&gt; db.alunos.find().sort({
  • 123. nome: 1
  • 124. }) .forEach(function (aluno) {
  • 125. print(&amp;quot;Aluno: &amp;quot; + aluno.nome)
  • 126. } )
  • 127. Aluno: Chaves
  • 128. Aluno: Chiquinha
  • 129. Aluno: Nhonho </li></ul>
  • 130. <ul><li>Média de cada matéria de cada aluno </li></ul><ul><li>&gt; db.alunos.find().sort({
  • 131. nome: 1
  • 132. }).forEach(function (aluno) {
  • 133. print(&amp;quot; &amp;quot; + aluno.nome);
  • 134. aluno.materias.forEach(function (materia) {
  • 135. var somaDasNotas = 0;
  • 136. materia.notas.forEach(function (nota) {
  • 137. somaDasNotas += nota;
  • 138. });
  • 139. var media = somaDasNotas / materia.notas.length;
  • 140. print(materia.materia + &amp;quot;: &amp;quot; + media)
  • 141. });
  • 142. }) </li></ul>
  • 143. <ul><li>Resultado da Média de cada matéria de cada aluno </li></ul><ul>Chaves <li>Matemática: 6.333333333333333
  • 144. Inglês: 8.833333333333334
  • 145. Chiquinha
  • 146. Matemática: 5.5
  • 147. Inglês: 5.833333333333333
  • 148. Nhonho
  • 149. Matemática: 8.833333333333334
  • 150. Inglês: 9.5 </li></ul>
  • 151. <ul><li>Listar número de alunos agrupados por idade </li></ul><ul><li>&gt; db.alunos. group ({
  • 152. key : {
  • 153. idade: true
  • 154. },
  • 155. initial : {
  • 156. alunos: 0
  • 157. },
  • 158. reduce : function ( aluno , grupo ) {
  • 159. grupo.alunos++;
  • 160. }
  • 161. })
  • 162. [{&amp;quot;idade&amp;quot; : 9 , &amp;quot;alunos&amp;quot; : 2},{&amp;quot;idade&amp;quot; : 8 , &amp;quot;alunos&amp;quot; : 1}] </li></ul>
  • 163. <ul>Agora vamos para a aula de geografia . Darei uma breve introdução ao MapReduce . </ul>
  • 164. <ul><li>Calcular a média das notas de cada matéria </li></ul><ul><li>&gt; mapReduce = db.alunos. mapReduce (function () {
  • 165. this.materias. forEach (function ( materia ) {
  • 166. materia.notas.forEach(function (nota) {
  • 167. emit( materia.materia , nota );
  • 168. })
  • 169. })
  • 170. }, function ( key , vals ) {
  • 171. var somaDasNotas = 0;
  • 172. vals.forEach (function (nota) {
  • 173. somaDasNotas += nota;
  • 174. });
  • 175. var media = somaDasNotas / vals.length;
  • 176. return media;
  • 177. }) </li></ul>
  • 178. <ul><li>Resultado do cálculo a média das notas de cada matéria </li></ul><ul><li>{&amp;quot; result &amp;quot; : &amp;quot;tmp.mr.mapreduce_1266446901_6&amp;quot;,
  • 179. &amp;quot;timeMillis&amp;quot; : 74, &amp;quot;counts&amp;quot; : {&amp;quot;input&amp;quot; : 3, &amp;quot;emit&amp;quot; : 18, &amp;quot;output&amp;quot; : 2},
  • 180. &amp;quot;ok&amp;quot; : 1,}
  • 181. &gt; db[ mapReduce.result ].find()
  • 182. { &amp;quot; _id &amp;quot; : &amp;quot;Inglês&amp;quot;, &amp;quot; value &amp;quot; : 8.055555555555555 }
  • 183. { &amp;quot;_id&amp;quot; : &amp;quot;Matemática&amp;quot;, &amp;quot;value&amp;quot; : 6.888888888888889 } </li></ul>
  • 184. <ul>Alguma pergunta, crianças? </ul>
  • 185. com a Turma do Chaves Por @PedroMenezes PedroMenezes.com

×