YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Portuguese, Brazilian subtitles

← Project Operator - Data Wranging with MongoDB

Get Embed Code
4 Languages

Showing Revision 8 created 06/20/2016 by Udacity Robot.

  1. Muito bem. Agora, vamos verificar isso
  2. e falar sobre o operador project. Algumas coisas
  3. a serem observadas sobre o project. Podemos usar o project para
  4. incluir campos a partir do documento original. Lembre-se de que o project trabalha
  5. com os dados em um único documento de cada vez. E,
  6. essencialmente, estamos definindo o formato com o project. Por isso, o
  7. modo mais simples de definir o formato é simplesmente especificar quais campos de
  8. cada um dos documentos que estamos recebendo neste estágio
  9. usando project que gostaríamos de incluir e passar
  10. para o próximo estágio. Uma coisa realmente bacana que podemos
  11. fazer com o project é inserir campos calculados. Por exemplo,
  12. uma proporção, que é o que faremos neste
  13. exemplo em particular no qual estamos trabalhando. Também
  14. podemos renomear campos. E, por fim, podemos redefinir o formato
  15. dos dados de modo significativo fazendo algo como
  16. criar campos que têm subdocumentos compostos do que
  17. eram, originalmente, campos de nível superior nos documentos,
  18. pois passaram para o estágio usando o operador
  19. project. Vamos voltar para o nosso código
  20. e verificar como estamos usando o project aqui. Lembre-se de
  21. que o problema que estamos tentando resolver aqui é
  22. responder à pergunta: quem tem a maior proporção de
  23. seguidores por amigos? Aqui é bastante direto. Vamos
  24. apenas extrair o campo screen_name do
  25. subdocumento user. Certo? E, de novo, usamos este
  26. cifrão aqui porque, em vez disto ser interpretado
  27. como apenas uma string literal, estamos informando ao mongoDB
  28. que queremos o valor de cada documento
  29. encontrado no subdocumento user e no
  30. campo screen_name. Certo? Assim, os documentos
  31. passados a partir deste estágio em particular
  32. terão um campo screen_name composto desse
  33. valor para cada documento recebido
  34. como entrada aqui. Certo. Agora, vamos analisar esta
  35. parte do estágio do project aqui. Vamos criar um
  36. campo ratio nos documentos que são
  37. obtidos neste estágio em particular. O campo ratio
  38. terá o valor da divisão
  39. de followers_count por friends_count. Desse modo,
  40. literalmente, calculando esta proporção aqui. Novamente, lembre-se de que friends,
  41. nos documentos que estamos analisando aqui, refere-se ao
  42. número de pessoas que eu sigo em oposição às
  43. pessoas que me seguem. Então, de novo, detalhando o
  44. subdocumento user, vamos extrair os valores de
  45. followers_count e friends_count. Usamos novamente
  46. o operador de cifrão aqui para indicar que, na verdade,
  47. queremos os valores de cada um deles. Em seguida,
  48. vamos usar o operador divide para calcular a
  49. proporção desses dois valores. É esse valor
  50. que irá compor o valor do campo
  51. ratio em cada documento passado a partir
  52. deste estágio usando o operador project. Muito bem.
  53. Quando chegarmos a este estágio, todos
  54. os documentos terão exatamente dois campos: ratio e
  55. screen_name. Em seguida, vamos apenas classificar em
  56. ordem decrescente com base em ratio e, é claro,
  57. limitar apenas ao primeiro documento
  58. que vemos. Vamos executar isto. Certo. E novamente,
  59. nossa saída a partir de uma consulta de agregação é sempre
  60. um único documento. Os resultados em que estamos realmente interessados
  61. estão sempre no campo result, que é um campo de valor de array. Certo? Então,
  62. neste caso, o usuário em nossa coleção de tweets que tem a maior
  63. proporção de seguidores por amigos é um usuário chamado Twitterific.
  64. Acontece que, na verdade, esse é um aplicativo do Twitter e,
  65. mesmo hoje, se verificar a página de Twitterific no Twitter,
  66. você verá que ele tem, aproximadamente,
  67. meio milhão de seguidores. Mas ele segue apenas 14 pessoas;
  68. por isso, sua proporção de seguidores por amigos ainda é extremamente alta.
  69. Novamente, neste exemplo, nos concentramos no operador $match,
  70. que é apenas um filtro, no operador $project, que é
  71. um operador de definição de formato e com o qual podemos fazer
  72. várias coisas. E os operadores sort e limit. Dessa forma,
  73. neste caso, temos quatro estágios em nosso pipeline.
  74. Agora, antes de concluir, eu quero apenas
  75. destacar rapidamente que podemos criar uma grande
  76. variedade de expressões usando o operador Project. Se verificarmos
  77. a documentação do MongoDB, existem vários
  78. operadores aritméticos que podem ser aplicados, bem como
  79. vários operadores de string, operadores de datas, e assim por diante.
  80. Então, esta é a página de operadores de expressão de agregação nos documentos. Eu incentivo
  81. você a buscar aqui mais informações sobre os diferentes tipos de operadores
  82. que estão disponíveis ao trabalhar com Project, além de
  83. outros operadores de framework de agregação. Consulte as Notas
  84. do instrutor para obter um link para esta página.