Projeto da Disciplina de Banco de Dados 2 - Parte NoSQL, conforme roteiro entregue pela professora.
Jogo educacional de perguntas e respostas para dispositivos móveis (celular e tablet) com foco nos estudantes do ensino fundamental, objetivando disponibilizar uma plataforma para incrementar e testar o aprendizado adquirido na sala de aula.
O sistema consiste de duas partes: uma plataforma web, para cadastro de usuários, questões, disciplinas e demais informações inerentes ao jogo e um aplicativo para dispositivo móvel. Os usuário receberam pontos, de acordo com o nível da questão, para cada pergunta corretamente respondida. Cada questão será composta por cinco alternativas, sendo apenas uma verdadeira. Cada questão terá um tema que está diretamente ligada a uma disciplina. Os usuários podem vincular uma escola ao seu perfil. Os usuários poderão ver sua colocação no ranking geral de pontos dos usuários, bem como sua colocação no ranking por estado, cidade e escola.
Todas as entidades do modelo conceitual serão utilizadas no projeto.
- Todos os atributos simples do modelo conceitual estão presentes nos documentos;
- Atributo multivalorado: as entidades
cidade
euf
tornaram-se atributo compostolocalizacao: { cidade: String, uf: String }
nas coleçõesquestao
eusuario
. - Atributo composto: foi adicionado o atributo
telefone: []
na coleçãousuario
. - Atributo opcional:
ìmagem
da entidade questão não foi incluído na coleçãoquestao
. - Relacionamento: o relacionamento
responde
entre as entidadesusuario
equestao
foi incluído como referência nas coleçõesusuario
equestao
.
Modelo Conceitual ER | Tipo no ER | MongoDB | Tipo no MongoDB | Observação |
---|---|---|---|---|
Questao | Entidade | Questao | Coleção | |
id | Chave primária | Campo _id | Campo simples | Campo obrigatório e de identificação em todos os documentos |
descricao | Atributo simples | Campo descricao | Campo simples | Campo obrigatório em todos os documentos |
imagem | Atributo opcional | Campo imagem | Campo simples | Campo opcional |
Nivel | Entidade | Nivel | Campo - Estrutura (embutido) | Campo obrigatório em todos os documentos |
id | Chave Primária | Não foi incluído na coleção | ||
nivel | Atributo simples | descricao | Campo simples | Campo obrigatório em todos os documentos |
pontuacao | Atributo simples | pontuacao | Campo simples | Campo obrigatório em todos os documentos |
Tema | Entidade | Tema | Campo - Estrutura (embutido) | Campo obrigatório em todos os documentos |
id | Chave Primária | Não foi incluído na coleção | ||
nome | Atributo simples | nome | Campo simples | Campo obrigatório em todos os documentos |
Disciplina | Entidade | disciplina | Campo - Estrutura (embutido) | Campo obrigatório em todos os documentos |
id | Chave Primária | Não foi incluído na coleção | ||
nome | Atributo simples | nome | Campo simples | Campo obrigatório em todos os documentos |
Alternativa | Entidade | alternativa | Campo - Estrutura (embutido) | Campo obrigatório em todos os documentos |
id | Chave Primária | Não foi incluído na coleção | ||
descricao | Atributo simples | descricao | Campo simples | Campo obrigatório em todos os documentos |
correta | Atributo simples | correta | Campo simples | Campo obrigatório em todos os documentos |
Usuario | Entidade | Usuario | Coleção | Principal entidade do projeto |
id | Chave primária | Campo _id | Campo simples | Campo obrigatório e de identificação em todos os documentos |
nome | Atributo simples | nome | Campo simples | Campo obrigatório em todos os documentos |
dtnasc | Atributo simples | dtnasc | Campo simples | Campo obrigatório em todos os documentos |
sexo | Atributo simples | sexo | Campo simples | Campo obrigatório em todos os documentos |
Atributo simples | Campo simples | Campo obrigatório em todos os documentos | ||
pontos | Atributo simples | pontos | Campo simples | Campo obrigatório em todos os documentos |
telefone | Atributo Multivalorado | telefone | Campo - Array | Campo opcional |
localizacao | Atributo Composto | localizacao | Campo - Estrutura (embutido) | Campo obrigatório em todos os documentos |
Escola | Entidade | escola | Campo - Estrutura (embutido) | Campo opcional |
id | Chave Primária | Não foi incluído na coleção | ||
nome | Atributo simples | nome | Campo simples | Campo obrigatório em todos os documentos |
localizacao | Atributo Composto | localizacao | Campo - Estrutura (embutido) | Campo obrigatório em todos os documentos |
Tipo | Entidade | tipo | Campo simples na Estrutura Escola | Campo obrigatório em todos os documentos |
Responde [Questão] | Relacionamento | Referência em Questao e Usuario | Referência |
Criando o banco:
use mapaedu_db
Questao:
db.createCollection("questao")
Usuario:
db.createCollection("usuario")
Questões:
db.questao.insertMany([
{ _id: 1, descricao: "Na frase “Degue Mata. Se a gente bobear, ela volta. É hora de esquentar a briga contra o mosquito.”, a palavra ELA substitui a palavra:", tema: "Sujeito", disciplina: "Português", nivel: "Super Fácil", pontuacao: 1, alternativa: [ { descricao: "Dengue", correta: true }, { descricao: "Gente", correta: false }, { descricao: "Briga", correta: false }, { descricao: "Hora", correta: false }, { descricao: "Nenhuma das alternativas", correta: false } ], respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 2, descricao: "Qual o tipo da frase: “Como se chama o teu gato?”.", tema: "Tipos de Frase", disciplina: "Português", nivel: "Super Fácil", pontuacao: 1, alternativa: [ { descricao: "Interrogativa", correta: true }, { descricao: "Exclamativa", correta: false }, { descricao: "Imperativa", correta: false }, { descricao: "Declarativa", correta: false }, { descricao: "Nenhuma das alternativas", correta: false } ], respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 3, descricao: "Indique a palavra que tem 5 fonemas:", tema: "Fonema", disciplina: "Português", nivel: "Super Fácil", pontuacao: 1, alternativa: [ { descricao: "Ficha", correta: false }, { descricao: "Molhado", correta: false }, { descricao: "Guerra", correta: false }, { descricao: "Fixo", correta: true }, { descricao: "Nenhuma das alternativas", correta: false } ], respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 4, descricao: "Qual a variedade linguística da frase: “Na hora de cumê, nois come; Na hora de bebe, nois bebe”.", tema: "Linguagem", disciplina: "Português", nivel: "Difícil", pontuacao: 7, alternativa: [ { descricao: "Linguagem formal", correta: false }, { descricao: "Linguagem errada", correta: false }, { descricao: "Linguagem informal", correta: true }, { descricao: "Linguagem animal", correta: false }, { descricao: "Nenhuma das alternativas", correta: false } ], respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 5, descricao: "A palavra que possui mais letra do que fonema, é:", tema: "Fonema", disciplina: "Português", nivel: "Extremamente Difícil", pontuacao: 10, alternativa: [ { descricao: "Caderno", correta: false }, { descricao: "Chapéu", correta: true }, { descricao: "Flores", correta: false }, { descricao: "Livro", correta: false }, { descricao: "Nenhuma das alternativas", correta: false } ], respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] }
])
Usuários:
db.usuario.insertMany([
{ _id: 1, nome: "Adjamilton Junior", dtnasc: "2010/10/10", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PE" }, pontos: 150, escola: { nome: "IFPB", cidade: "João Pessoa", uf: "PB", tipo: "Federal" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 2, nome: "Paulo Ricardo", dtnasc: "2005/05/20", sexo: "m", email: "[email protected]", telefone: ["83999440111"], localizacao: { cidade: "João Pessoa", uf: "PE" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 3, nome: "João Rodrigues de Almeida", dtnasc: "2008/03/01", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PE" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 4, nome: "Karla de Souza", dtnasc: "1999/09/24", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 4, resposta: true, data: new Date() } ] },
{ _id: 5, nome: "Diógenes Batista dos Santos", dtnasc: "2004/11/07", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: ObjectId("5c6883b4566f5b03457d16d9"), resposta: true, data: new Date() }, { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() } ] }
])
db.usuario.insertMany([
{ _id: 6, nome: "Juliano Righetto", dtnasc: "2002/10/19", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 7, nome: "Francisco Silva", dtnasc: "2001/09/11", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 5, resposta: true, data: new Date() }, { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() } ] },
{ _id: 8, nome: "Mariana dos Santos Neves", dtnasc: "2006/11/09", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 9, nome: "Juliana Battisti", dtnasc: "2001/04/18", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 10, nome: "Luiza Patrícia dos Santos", dtnasc: "2001/04/10", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] }
])
db.usuario.insertMany([
{ _id: 11, nome: "Maria Eduarda Félix de Almeida", dtnasc: "2007/07/17", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PE", tipo: "Estadual" }, respostas: [ { _id: ObjectId("5c6883b4566f5b03457d16d9"), resposta: true, data: new Date() }, { _id: ObjectId("5c6883b4566f5b03457d16da"), resposta: true, data: new Date() }, { _id: ObjectId("5c6883b4566f5b03457d16db"), resposta: true, data: new Date() }, { _id: ObjectId("5c6883b4566f5b03457d16dc"), resposta: true, data: new Date() }, { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 12, nome: "Patrícia Rouanet", dtnasc: "2002/06/23", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PE" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 3, resposta: true, data: new Date() } ] },
{ _id: 13, nome: "Mary de Souza", dtnasc: "1997/10/10", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PE" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 2, resposta: true, data: new Date() } ] },
{ _id: 14, nome: "João de Souza e Silva", dtnasc: "2003/07/18", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 15, nome: "Luciano Patrício", dtnasc: "2004/01/21", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PE" }, pontos : 100, escola: { nome: "EEEFM Raul Machado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] }
])
db.usuario.insertMany([
{ _id: 16, nome: "Jaqueline Belgrado", dtnasc: "2002/07/12", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 17, nome: "Arcênio Segundo", dtnasc: "1999/02/11", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 18, nome: "Diniz Medeiros", dtnasc: "2003/01/21", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 19, nome: "Diogo Silva", dtnasc: "2000/08/31", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 20, nome: "Jackie Santini", dtnasc: "1995/12/31", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] }
])
db.usuario.insertMany([
{ _id: 21, nome: "Rafael Medeiros", dtnasc: "2008/10/20", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 3, resposta: true, data: new Date() } ] },
{ _id: 22, nome: "Rafael Brito", dtnasc: "1999/04/10", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 23, nome: "Poliana DiCaprio Almeida", dtnasc: "2002/05/20", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 24, nome: "Joana Fonn", dtnasc: "1998/06/17", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 25, nome: "James Dias", dtnasc: "2001/07/15", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 4, resposta: true, data: new Date() }, { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] }
])
db.usuario.insertMany([
{ _id: 26, nome: "Gutierrez Almeida", dtnasc: "2006/08/11", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 5, resposta: true, data: new Date() }, { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() } ] },
{ _id: 27, nome: "João José da Silva", dtnasc: "2005/09/09", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 28, nome: "Denis Djhonathan", dtnasc: "2004/08/10", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 29, nome: "Rafaella Maria", dtnasc: "2008/07/11", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 30, nome: "Geni Carla", dtnasc: "2007/06/12", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] }
])
db.usuario.insertMany([
{ _id: 31, nome: "Carlos Henrique", dtnasc: "1999/05/01", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 32, nome: "Diana Almeida", dtnasc: "2000/04/02", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 33, nome: "Juliana Ribeiro", dtnasc: "2001/03/03", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 34, nome: "Juliano Souza", dtnasc: "2002/02/04", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 35, nome: "Judith Safra", dtnasc: "2009/01/05", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] }
])
db.usuario.insertMany([
{ _id: 36, nome: "Marcos C Lima", dtnasc: "2007/06/29", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 37, nome: "Nicácio Lima", dtnasc: "2008/07/28", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 38, nome: "Dennys Moreira", dtnasc: "2007/08/27", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 39, nome: "Denilson Silva", dtnasc: "2005/09/26", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 40, nome: "Luan Carlos", dtnasc: "2004/10/25", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] }
])
db.usuario.insertMany([
{ _id: 41, nome: "Paula Diniz", dtnasc: "2002/11/24", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 42, nome: "Rita de Cassia", dtnasc: "2001/12/23", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 43, nome: "Reinaldo Franco", dtnasc: "2000/01/22", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 44, nome: "Petrônio Gonçalves", dtnasc: "2008/02/21", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 45, nome: "Giuliano Santos", dtnasc: "2007/03/20", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] }
])
db.usuario.insertMany([
{ _id: 46, nome: "Dante Silva", dtnasc: "2006/04/19", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 47, nome: "Robson Euller", dtnasc: "2005/05/18", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 48, nome: "Maria Josefa", dtnasc: "2004/06/17", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 49, nome: "Mariana Santana", dtnasc: "2003/07/16", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 50, nome: "Marlene Diniz", dtnasc: "2002/08/15", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] }
])
db.usuario.insertMany([
{ _id: 51, nome: "Glaucia de Souza", dtnasc: "2001/09/14", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 52, nome: "Túlio Santos", dtnasc: "2000/10/13", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 53, nome: "Maria Joaquina", dtnasc: "1999/12/11", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 54, nome: "Larissa do Socorro", dtnasc: "1998/11/12", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 55, nome: "João P Santos", dtnasc: "1997/10/04", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] }
])
db.usuario.insertMany([
{ _id: 56, nome: "Pedro Santos", dtnasc: "2000/09/03", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 2, resposta: true, data: new Date() } ] },
{ _id: 57, nome: "Maria Eduarda Oliveira", dtnasc: "2001/08/02", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 58, nome: "Margarida Alves", dtnasc: "2002/07/01", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 59, nome: "Dilma dos Santos", dtnasc: "2003/06/06", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 60, nome: "Janaina Silva", dtnasc: "2004/05/07", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "EEEFM Prof. Maria Helena Bronzeado", cidade: "João Pessoa", uf: "PB", tipo: "Estadual" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] }
])
db.usuario.insertMany([
{ _id: 61, nome: "Denise Carla", dtnasc: "2005/04/08", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PE" }, pontos : 100, escola: { nome: "Marista Pio X", cidade: "João Pessoa", uf: "PB", tipo: "Privada" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 62, nome: "Rafael Oliveiras", dtnasc: "2006/03/09", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PE" }, pontos : 100, escola: { nome: "Marista Pio X", cidade: "João Pessoa", uf: "PB", tipo: "Privada" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 63, nome: "Mariana S Rodolfo", dtnasc: "2007/02/17", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PE" }, pontos : 100, escola: { nome: "Marista Pio X", cidade: "João Pessoa", uf: "PB", tipo: "Privada" }, respostas: [ { _id: 3, resposta: true, data: new Date() } ] },
{ _id: 64, nome: "Jennifer dos Santos", dtnasc: "1999/01/11", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PE" }, pontos : 100, escola: { nome: "Marista Pio X", cidade: "João Pessoa", uf: "PB", tipo: "Privada" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 65, nome: "Luiz Carlos", dtnasc: "2000/12/30", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "Marista Pio X", cidade: "João Pessoa", uf: "PB", tipo: "Privada" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] }
])
db.usuario.insertMany([
{ _id: 66, nome: "Santana do Nascimento", dtnasc: "2001/08/31", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "Marista Pio X", cidade: "João Pessoa", uf: "PB", tipo: "Privada" }, respostas: [ { _id: 2, resposta: true, data: new Date() } ] },
{ _id: 67, nome: "Yuri Souza", dtnasc: "2002/07/29", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "Marista Pio X", cidade: "João Pessoa", uf: "PB", tipo: "Privada" }, respostas: [ { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 68, nome: "João Medeiros", dtnasc: "2003/08/28", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos : 100, escola: { nome: "Marista Pio X", cidade: "João Pessoa", uf: "PB", tipo: "Privada" }, respostas: [ { _id: 1, resposta: true, data: new Date() }, { _id: 2, resposta: true, data: new Date() }, { _id: 3, resposta: true, data: new Date() }, { _id: 4, resposta: true, data: new Date() }, { _id: 5, resposta: true, data: new Date() } ] },
{ _id: 69, nome: "Rafaela Silva Santos", dtnasc: "2004/10/27", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "Campina Grande", uf: "PB" }, pontos : 100, escola: { nome: "Marista Pio X", cidade: "João Pessoa", uf: "PB", tipo: "Privada" }, respostas: [ { _id: 1, resposta: true, data: new Date() } ] },
{ _id: 70, nome: "Mirna dos Santos", dtnasc: "2005/11/26", sexo: "f", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "Campo Grande", uf: "PE" }, pontos: 100, escola: { nome: "GEO Sul", cidade: "João Pessoa", uf: "PB", tipo: "Privada" }, respostas: [ { _id: 2, resposta: true, data: new Date() } ] },
{ _id: 71, nome: "Gonçalves Silva", dtnasc: "2006/02/25", sexo: "m", email: "[email protected]", telefone: ["83999440111", "8332240323"], localizacao: { cidade: "João Pessoa", uf: "PB" }, pontos: 100, escola: { nome: "GEO Sul", cidade: "João Pessoa", uf: "PB", tipo: "Privada" }, respostas: [ { _id: 2, resposta: true, data: new Date() } ] },
])
Questao:
db.questao.createIndex( { descricao: 1 } )
Usuario:
db.usuario.createIndex( { nome: 1, pontos: -1 } )
Atualizando o nome do usuário Adjamilton Junior
.
db.usuario.update( { "nome": "Adjamilton Junior" }, { $set: { "nome": "Adjamilton M. A. Junior" } } )
Alterando a UF de PE para PB das cidades de João Pessoa e Campina Grande.
db.usuario.updateMany( { "localizacao.cidade": { $in: ["João Pessoa", "Campina Grande"] } }, { $set: { "localizacao.uf": "PB" } })
Removendo o usuário Gonçalves Silva
.
db.usuario.remove( { "nome": "Gonçalves Silva" } )
- Todas as consultas devem apresentar seu enunciado e sua solução.
- Os comandos (todos) devem fazer sentido à aplicação e seus requisitos.
- 01 com Coleção inteira
Todos os documentos da coleção questao
de forma organizada.
db.questao.find().pretty()
- 01 com Contagem de documentos na coleção
Quantidade de documentos da coleção usuario
.
db.usuario.count()
- 03 consultas com filtros diversos (IN, GT, etc), sem projeção
Usuários com mais de 100 pontos.
db.usuario.find( { "pontos": { $gt: 100 } } )
Usuários que estudam em escolas da cidade de Campina Grande e Recife.
db.usuario.find( { "escola.cidade": { $in: ["Campina Grande", "Recife"] } } )
Usuários com pontos maior que 100 ou que não marcaram nenhum ponto.
db.usuario.find( { $or: [ { "pontos": { $lt: 1 } }, { "pontos": { $gt: 100 } } ] } )
- 03 consultas com filtros diversos, com projeção
Nome dos usuários com mais de 100 pontos.
db.usuario.find( { "pontos": { $gt: 100 } }, { "nome": true } )
Nome dos usuários que ainda não pontuaram.
db.usuario.find( { "pontos": { $lt: 1 } }, { _id: false, nome: true } )
Ranking dos usuários da Paraíba.
db.usuario.find( { "localizacao.uf": "PB" }, { _id: false, nome: true, pontos: true, "escola.nome": true } ).pretty()
- 01 consulta com filtro e projeção e uso de expressão regular
Usuários que moram em cidades cujo nome começam com Camp.
db.usuario.find({ "localizacao.cidade": { $regex: /^Camp/ } }, { "nome": true } )
- 01 consulta com acesso a array de elementos
Descrição da(s) questão(ões) cuja a segunda alternativa seja a resposta correta.
db.questao.find({ "alternativa.1.correta": true }, { "descricao": true } )
- 01 consulta com acesso a estrutura embutida
Listagem dos usuários estudantes da escola EEEFM Prof. Maria Helena Bronzeado
.
db.usuario.find( { "escola.nome": "EEEFM Prof. Maria Helena Bronzeado" } ).pretty()
- 01 consulta com função de agregação (sum, avg, max ou min)
Maior número de pontos.
db.usuario.aggregate({ $group : { _id: null, pontos: { $max: "$pontos"} } } )
- 01 consulta que use distinct ou limit
Três primeiros usuários por ordem alfabética do nome.
db.usuario.find().sort({nome: 1}).limit(3).pretty()
- 01 outra consulta a seu critério, explicando o porquê dela
Quantidade de pontos por cidade.
db.usuario.aggregate( [ { $match: { "localizacao.cidade": "João Pessoa" } }, { $group: { _id: "$localizacao.cidade", "pontos": { $sum: "$pontos" } } } ] )
As principais características do mongo que resultam em vantagens no desenvolvimento deste projeto são:
- Simplicidade da linguagem de query que facilita a manipulação e consulta dos documentos e coleções;
- Modelos flexiveis de representação e armazenamento de dados, permitem atualizações na estrutura dos documentos sem ocasionar problemas;
- suporte a replicação e distribuição dos dados.
Outras vantagens são escalabilidade, disponibilidade, alto desempenho e confiabilidade.
Em relação ao projeto, identifica-se quatro pontos negativos de usar o MongoDB, que são:
- Falta de compromisso com a consistência dos dados, passando para o programador a responsabilidade de entregar os dados “normalizados”;
- Não há garantia de integridade referencial, podendo causar perda da conexão entre os dados;
- Em grandes coleções, consultas que envolvam referências a outros documentos podem aumentar a latência;
- Perda da atomicidade dos dados.