YouTube

Got a YouTube account?

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

Portuguese, Brazilian subtitles

← Multiple Stages Using a Given Operator - Data Wranging with MongoDB

Get Embed Code
4 Languages

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

  1. Espero que tenha ficado claro que o framework de agregação foi

  2. desenvolvido para permitir a criação de um canal de processamento de dados, como
  3. vimos várias vezes. Você pode incluir quantos
  4. estágios forem necessários para atingir uma meta. Em
  5. cada estágio, é preciso considerar a entrada que o
  6. estágio precisa para receber e qual saída ele precisa para produzir.
  7. Mas o que quero falar aqui é que
  8. muitas tarefas exigem que usemos mais de um estágio com
  9. o mesmo operador. Por exemplo, frequentemente precisamos de vários
  10. estágios de grupo para atingir nossa meta. Vamos
  11. ver outro exemplo. Desta vez, quero que você
  12. considere cada estágio individualmente e pense nas
  13. entradas e saídas. Vamos reformular
  14. nossa pergunta original de menções do usuário. E desta vez
  15. vamos observar quem mencionou os usuários mais
  16. exclusivos. Da mesma forma que analisamos
  17. as hashtags exclusivas minutos atrás, agora
  18. vamos ver a modificação deste pipeline
  19. para que contemos apenas menções de usuários
  20. ainda não considerados em nosso agrupamento. Aqui
  21. está o código para isso. Temos nossa fase de desenrolamento como antes, mas o estágio de
  22. grupo é diferente, e você verá que há
  23. outra fase de desenrolamento aqui e outro estágio de grupo aqui.
  24. Neste primeiro estágio de grupo, o que faremos é
  25. agregar ainda no nome da tela do usuário, mas, em
  26. vez de simplesmente somar todos os documentos que
  27. este estágio de grupo recebeu para calcular todas as
  28. menções de usuário, pois, é claro, o desenrolamento vai gerar
  29. um documento para cada menção do usuário, o que vamos fazer
  30. aqui é usar o operador addToSet,
  31. que acabamos de analisar alguns minutos atrás. Aqui,
  32. vamos prestar atenção no
  33. nome da tela para o usuário que foi de fato
  34. mencionado no tweet. Estamos acumulando um
  35. array neste estágio de grupo de um conjunto
  36. exclusivo de usuários mencionados em tweets produzidos
  37. por este usuário, ou por cada usuário. Mas isso
  38. não nos leva ao que queremos, pois
  39. lembre-se de que nossa pergunta é, quem mencionou os usuários
  40. mais exclusivos? Para isso, tudo o que
  41. temos é uma lista de usuários exclusivos. Ainda não os
  42. contamos. Para fazer isso, o que vamos
  43. precisar fazer é pensar sobre o que é a
  44. saída deste estágio de grupo? Bem, a saída vai
  45. ser exatamente o que definimos aqui como a
  46. estrutura de documentos produzida por isto. Todos os documentos
  47. terão um campo ID sublinhado, que será o nome de usuário
  48. que forma a base do agrupamento que
  49. esse documento representa. E haverá este campo
  50. mset, nosso conjunto de menções. Certo? Este
  51. estágio aqui receberá documentos com um campo ID
  52. sublinhado e um campo mset. Isso significa que podemos usar unwind
  53. novamente aqui e produzir um documento para cada
  54. item neste array. E não se esqueça que esse
  55. será um array de elementos exclusivos porque usamos o operador addToSet para
  56. produzi-lo. Assim, unwind vai gerar um documento para cada item encontrado no
  57. campo mset para cada documento em sua entrada. Este estágio
  58. vai desenrolar este array de menções de usuário exclusivo e passá-las
  59. para esse segundo estágio de grupo. E é nesse estágio de grupo que
  60. acabamos calculando a contagem que queremos.
  61. Em vez de apenas contar todas as menções de usuário como
  62. fizemos antes, aqui o que vamos fazer
  63. é contar essas menções exclusivas que foram passadas
  64. a nós após o desenrolar do array mset. Certo?
  65. Portanto, os documentos a serem passados deste
  66. segundo estágio de grupo para sort vão conter uma
  67. id. Isso é apenas uma cópia, basicamente da
  68. id que obtivemos como entrada para este estágio,
  69. que vai ser a id que é produzida
  70. aqui neste estágio. E depois vamos apenas contar,
  71. quantos documentos eu recebi que têm essa id?
  72. Ou quantas menções de usuário exclusivo eu recebi
  73. para este usuário específico? Certo? Depois vamos simplesmente
  74. classificar com base no campo de contagem, em ordem decrescente,
  75. como estamos fazendo na maioria dos exemplos. Por fim,
  76. vou limitá-la a dez para que possamos ver quais são as
  77. contagens para menções de usuário exclusivo dos
  78. 10 principais tweeters. Certo. Vamos executar isto.
  79. Certo. Podemos ver os nomes dos usuários,
  80. e o respectivo número de menções de usuário exclusivo em toda esta coleção.