No projeto final desse módulo você terá que achar qual a melhor forma de modelagem a partir de uma já previamente feita.
A ideia surgiu de um post do Jorge Rafael no grupo do Facebook com a seguinte modelagem relacional.
Logo após o Herbert Pimentel postou a seguinte modelagem que irá servir de base para nosso projeto final.
Perceba que falta a coleção de user
que será seu trabalho criar uma a partir dos dados da modelagem relacional.
Além de criar a coleção user
e achar uma modelagem melhor da proposta, terá que explicar o porquê daquela escolha e terá que executar as seguintes ações em suas coleções:
- Cadastre 10 usuários diferentes.
- Cadastre 5 projetos diferentes.
- cada um com 5 membros, sempre diferentes dentro dos projetos;
- cada um com pelo menos 3 tags diferentes;
- escolha 1 tag onde deva ficar em 2 projetos;
- escolha 1 tag onde deva ficar em 3 projetos;
- cada projeto com pelo menos 1 goal;
- cada goal com pelo menos 3 tags;
- cada goal com pelo menos 2 atividades, deixe 1 projeto sem.
- Liste as informações dos membros de 1 projeto específico que deve ser buscado pelo seu nome de forma a não ligar para maiúsculas e minúsculas.
- Liste todos os projetos com a tag que você escolheu para os 3 projetos em comum.
- Liste apenas os nomes de todas as atividades para todos os projetos.
- Liste todos os projetos que não possuam uma tag.
- Liste todos os usuários que não fazem parte do primeiro projeto cadastrado.
- Adicione para todos os projetos o campo
views: 0
. - Adicione 1 tag diferente para cada projeto.
- Adicione 2 membros diferentes para cada projeto.
- Adicione 1 comentário em cada atividade, deixe apenas 1 projeto sem.
- Adicione 1 projeto inteiro com UPSERT.
- Apague todos os projetos que não possuam tags.
- Apague todos os projetos que não possuam comentários nas atividades.
- Apague todos os projetos que não possuam atividades.
- Escolha 2 usuário e apague todos os projetos em que os 2 fazem parte.
- Apague todos os projetos que possuam uma determinada tag em goal.
- Crie um usuário com permissões APENAS de Leitura.
- Crie um usuário com permissões de Escrita e Leitura.
- Adicionar o papel
grantRolesToUser
erevokeRole
para o usuário com Escrita e Leitura. - Remover o papel
grantRolesToUser
para o usuário com Escrita e Leitura. - Listar todos os usuários com seus papéis e ações.
Depois de criada toda sua base você deverá criar um cluster utilizando:
- 1 Router
- 1 Config Server
- 3 Shardings
- 3 Replicas
Você deverá escolher qual sua coleção deverá ser shardeada para poder aguentar muita carga repentinamente e deverá replicar cada Shard, pode ser feito localmente como em alguma VPS FREE.
# MongoDb - Projeto Final
**Autor:** Nome Completo
**Data** Date.now() //em timestamp
## Para qual sistema você usaria o MogoDB (diferente desse)?
## Qual a modelagem da sua coleção de `users`?
## Qual a modelagem da sua coleção de `projects`?
## Qual a modelagem da sua coleção retirada de `projects`?
## Create - cadastro
## Retrieve - busca
## Update - alteração
## Delete - remoção
## Sharding
// coloque aqui todos os comandos que você executou
## Replica
// coloque aqui todos os comandos que você executou
Envie seu arquivo para esse repositório seguindo o seguinte padrão de nome para o arquivo:
project-githubuser-nome-completo-com-hífens.md