Você está na página 1de 5

WBA0475_v1.

TÓPICOS AVANÇADOS EM BANCO DE DADOS:


BANCO DE DADOS NÃO RELACIONAIS – NOSQL
Proposta de Resolução
Autoria: Rogério Ferreira

Leitura crítica: Sergio Eduardo Nunes

A solução do Desafio Profissional deve ser implementada utilizando o modelo


de dados não relacional (NoSQL), preferencialmente o banco de dados
MongoDB, pois este foi o banco estudado no tema referente à tecnologia
NoSQL. O uso de NoSQL é necessário, pois esta é a tecnologia mais
adequada para implementar a análise de grandes volumes de dados em
ambientes em que o esquema das informações pode mudar constantemente,
uma característica inerente às redes sociais. O uso da ferramenta para
implementação das instruções fica a critério do aluno, contudo, recomenda-se
o uso do Robo3T, apresentado como dica do professor no tema sobre bancos
de dados não relacionais.

A implementação da solução divide-se basicamente em duas etapas:

1. Na primeira etapa, o aluno deve interpretar os Requisitos 1, 2 e 3 para


definir as instruções NoSQL para criar os campos dos documentos em
que os dados serão armazenados; o aluno deve, ainda, inserir alguns
documentos de exemplo para viabilizar a execução da etapa seguinte.
2. Na segunda etapa, o aluno deve interpretar a especificação do Requisito
4 para elaborar as instruções NoSQL que recuperem as informações
solicitadas no relatório.

Proposta de solução para a etapa 1

As instruções elaboradas pelos alunos podem variar em algum grau, contudo,


cada instrução de inserção deve contemplar minimamente os seguintes dados:

db.posts.insert({"id": "post1",

"data": "15/06/2020",

"texto":"Novo empreendimento na Vila Bosque",

"curtidas": 15,

"comentarios": 3,
"compartilhamentos": 2})

db.users.insert({"id": 1,

"nome": "Francisco",

"apelido":"francis1984",

"idade": 36,

"cidade": "Rio de Janeiro"})

db.comments.insert({"id": 1,

"post": "post1",

"data": "16/06/2020",

"curtidas": 2,

"texto":"Gostaria de mais informações sobre o


empreendimento.",

"usuario": 1})

Proposta de solução para a Etapa 2

As instruções elaboradas pelos alunos podem variar em algum grau, contudo,


devem apresentar minimamente as seguintes informações:

db.users.distinct("cidade")

db.posts.aggregate([

{ "$project" :

{
'ID' : '$id',

'Data' : '$data',

'Engajamento' : { '$add' : [ '$curtidas',


'$comentarios', '$compartilhamentos' ] }

])

db.users.aggregate([

$lookup:

from: "comments",

localField: "id",

foreignField: "usuario",

as: "comentarios"

},

{"$match": { "apelido": "apelido_usuario" }

])

db.comments.find({"texto" : /^Reclam/}, {"data": 1,


"texto": 1})

Você também pode gostar