Skip to content

CarolinaInglethe/ci-mongodb-dataflights

Repository files navigation

Boas vindas ao repositório do projeto DataFlights!!

Habilidades

  • Buscar documentos no banco
  • Usar filtros na busca
  • Deletar documentos conforme filtro
  • Contar documentos compreendidos nos filtros pedidos
  • Inserir documentos no banco

Desenvolvimento

Nesse projeto você vai elaborar queries em mongo para:

  • Consultar a coleção do projeto, usando vários campos para filtrar essa busca,
  • Deletar alguns voos conforme outros filtros.
  • Contar voos compreendidos nos filtros.

Instruções para restaurar o banco de dados dataFlights

  1. Abra o terminal e conecte-se à sua instância local do MongoDB. Se você receber uma mensagem de erro com uma mensagem como Connection refused, tente reiniciar sua instância clicando (nesse link do course) e através do menu lateral, no item Conectando.

  2. Agora que você tem certeza de que a sua instância está no ar e que você está conectado a ela, digite exit. Você voltará ao terminal para iniciar a importação dos dados.

  3. Na raiz do diretório do projeto, execute o seguinte comando que fará a restauração da base de dados dataFlights:

    DBNAME=dataFlights ./scripts/resetdb.sh assets
  • A execução desse script criará um banco de dados chamado dataFlights e importará os dados para a coleção voos.

⚠️ Como tanto esse script quanto o script de execução local dos testes (mostrado na seção seguinte), restauram a base de dados dataFlights, se atente a salvar seu progresso nos arquivos de desafio! ⚠️


Implementações técnicas

Para executar localmente os testes, é preciso escrever o seguinte no seu terminal, estando na raiz do diretório do projeto:

./scripts/evaluate.sh

Esse script passará por todos os desafios e imprimirá um relatório indicando se passou ou não para cada desafio. Como a execução do script envolve restauração da base de dados dataFlights de um teste para outro, recomenda-se esperar pela sua execução completa.

Para executar somente o teste de um desafio, execute o comando abaixo, substituindo N pelo númedo do desafio

./scripts/evaluate.sh desafioN

⚠️ Para quem não possui o MongoDB instalado e está utilizando o docker ⚠️

É necessário executar os testes locamente é necessário seguir os seguintes passos:

  1. Acesse o terminal na raiz da pasta do projeto Dataflights;
  2. Crie um container com um volume apontando para a pasta do projeto docker run -d --name=nomeDoContainer -v "$PWD:/app" -p 27017:27017 mongo;
  3. Com o container em execução, acesse o terminal do container docker exec -it mongoProjeto bash;
  4. No terminal do container acesse a pasta mapeada no volume (no exemplo acima /app);
  5. E por fim execute o script de testes do projeto: ./scripts/evaluate.sh. Se por algum motivo a execução do container for finalizada, basta iniciá-lo novamente com o comando docker start nomedDoContainer e seguir a parir do passo 3 em diante.

Requisitos do projeto

Durante a execução do projeto, utilize queries do mongo para retornar os valores pedidos nos requisitos.

Você deve criar uma pasta chamada challenges na raíz do projeto, contendo dentro dela arquivos no formato desafioX.js onde X é o número do requisito.

Dentro dos arquivos desafioX.js, crie uma query ou mais (se necessário), para retornar o que o requisito pede.

1 - Retorne a quantidade de documentos inseridos na coleção voos.

2 - Retorne os 10 primeiros documentos com voos da empresa AZUL.

3 - Retorne a quantidade de voos da empresa AZUL.

4 - Retorne a quantidade de voos da empresa GOL.

5 - Retorne o vooId do décimo ao décimo segundo documento da coleção voos.

6 - Retorne apenas os campos empresa.sigla, empresa.nome e passageiros do voo com o campo vooId igual a 756807.

7 - Retorne a quantidade de voos em que o ano seja menor do que 2017.

8 - Retorne a quantidade de voos em que o ano seja maior do que 2016.

9 - Retorne a quantidade de voos entre os anos de 2017 e 2018.

10 - Retorne apenas os 10 primeiros documentos com voos da empresa GOL do ano de 2017. Exiba apenas os campos vooId, empresa.nome, aeroportoOrigem.nome, aeroportoDestino.nome, mes e ano.

11 - Retorne a quantidade de documentos em que o campo aeroportoDestino.pais não seja igual a ESTADOS UNIDOS.

12 - Retorne a quantidade de documentos em que o campo aeroportoDestino.pais seja igual a BRASIL, ARGENTINA ou CHILE.

13 - Retorne a quantidade de documentos em que o campo aeroportoDestino.continente não seja igual a EUROPA, ÁSIA e OCEANIA.

14 - Retorne o total de voos em que o país de origem não seja BRASIL.

15 - Retorne o total de voos com mais de 20 decolagens.

16 - Retorne o total de voos em que o campo natureza possui o valor Internacional.

17 - Retorne o total de voos em que o campo natureza possui o valor Doméstica.

18 - Retorne o vooId, mes e ano do primeiro voo com mais de 7000 passageiros pagos.

19 - Retorne o vooId do primeiro voo em que o campo litrosCombustivel exista.

20 - Retorne o vooId do primeiro voo em que o campo rtk não exista.

21 - Retorne o vooId do primeiro voo em que o campo litrosCombustivel seja maior ou igual a 1000.

22 - Retorne o vooId do primeiro voo em que a empresa seja DELTA AIRLINES ou AMERICAN AIRLINES, a sigla do aeroporto de origem seja SBGR e a sigla do aeroporto de destino seja KJFK.

23 - Retorne o vooId e litrosCombustivel do primeiro voo em que o campo litrosCombustivel não seja maior do que 1000 e o campo litrosCombustivel exista.

24 - Retorne o vooId, empresa.nome e litrosCombustivel do primeiro voo em que litrosCombustivel não seja maior do que 600 e a empresa não seja GOL ou AZUL, e o campo litrosCombustivel exista.

25 - Remova todos os voos da empresa AZUL em que a quantidade de combustível seja menor do que 400. Informe a quantidade de documentos removidos.

26 - Remova todos os voos da empresa GOL em que a quantidade de passageiros pagos esteja entre 5 e 10, incluindo os casos em que a quantidade é 5 e 10. Informe a quantidade de documentos removidos.

27 - Retorne a quantidade total de voos de natureza Doméstica que a empresa PASSAREDO possui, via uso de uma nova coleção chamada resumoVoos.

Ou seja, a coleção resumoVoos conterá documentos onde cada um indica para cada empresa a quantidade total de voos que ela possui de natureza Doméstica.

Para isso, escreva no arquivo desafio27.js duas queries, nesta ordem:

  1. Conte quantos voos da empresa PASSAREDO cujo campo natureza possua valor igual a Doméstica e crie uma query que insira na coleção resumoVoos um documento com os campos: empresa (nome da empresa) e totalVoosDomesticos (o total retornado anteriormente).

  2. Em uma segunda query, retorne a empresa e o totalVoosDomesticos do primeiro documento presente na coleção resumoVoos em que a empresa seja PASSAREDO.

28 - Retorne a quantidade total de voos de natureza Doméstica que a empresa LATAM AIRLINES BRASIL possui, via uso de uma nova coleção chamada resumoVoos.

Para isso, escreva no arquivo desafio28.js duas queries, nesta ordem:

  1. Conte quantos voos da empresa LATAM AIRLINES BRASIL cujo campo natureza possua valor igual a Doméstica e crie uma query que insira na coleção resumoVoos um documento com os campos: empresa (nome da empresa) e totalVoosDomesticos (o total retornado anteriormente).

  2. Em uma segunda query, retorne a empresa e o totalVoosDomesticos do primeiro documento presente na coleção resumoVoos em que a empresa seja LATAM AIRLINES BRASIL.


Revisando um pull request

Use o conteúdo sobre Code Review para te ajudar a revisar os Pull Requests.

#VQV 🚀

Depois de terminar o desenvolvimento (OPCIONAL)

Para sinalizar que o seu projeto está pronto para o "Code Review" dos seus colegas, faça o seguinte:

  • Vá até a página DO SEU Pull Request, adicione a label de "code-review" e marque seus colegas:

    • No menu à direita, clique no link "Labels" e escolha a label code-review;

    • No menu à direita, clique no link "Assignees" e escolha o seu usuário;

    • No menu à direita, clique no link "Reviewers" e digite students, selecione o time tryber/students-sd-00.

Caso tenha alguma dúvida, aqui tem um video explicativo.


Avisos finais

Ao finalizar e submeter o projeto, não se esqueça de avaliar sua experiência preenchendo o formulário. Leva menos de 3 minutos!

Link: FORMULÁRIO DE AVALIAÇÃO DE PROJETO

O avaliador automático não necessariamente avalia seu projeto na ordem em que os requisitos aparecem no readme. Isso acontece para deixar o processo de avaliação mais rápido. Então, não se assuste se isso acontecer, ok?

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published