Skip to content

Files

Latest commit

b574f63 · Jan 4, 2021

History

History

project-24-mongodb-dataflights

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
Jan 4, 2021
Jan 4, 2021
Jan 4, 2021
Jan 4, 2021
Jan 4, 2021
Jan 4, 2021
Jan 4, 2021
Jan 4, 2021
Jan 4, 2021
Jan 4, 2021

Boas vindas ao repositório do projeto DataFlights!

Você já usa o GitHub diariamente para desenvolver os exercícios, certo? Agora, para desenvolver os projetos, você deverá seguir as instruções a seguir. Fique atento a cada passo, e se tiver qualquer dúvida, nos envie por Slack! #vqv 🚀

Aqui você vai encontrar os detalhes de como estruturar o desenvolvimento do seu projeto a partir desse repositório, utilizando uma branch específica e um Pull Request para colocar seus códigos.


Instruções para entregar seu projeto:

ANTES DE COMEÇAR A DESENVOLVER:

  1. Clone o repositório
  • git clone https://github.com/tryber/sd-04-mongodb-dataflights.git.
  • Entre na pasta do repositório que você acabou de clonar:
    • cd sd-04-mongodb-dataflights
  1. Crie uma branch a partir da branch master
  • Verifique que você está na branch master
    • Exemplo: git branch
  • Se não estiver, mude para a branch master
    • Exemplo: git checkout master
  • Agora crie uma branch à qual você vai submeter os commits do seu projeto
    • Você deve criar uma branch no seguinte formato: nome-de-usuario-nome-do-projeto
    • Exemplo: git checkout -b seunome-mongodb-dataflights
  1. Para cada exercício você deve criar um novo arquivo JS dentro de uma pasta na raiz do seu projeto chamada challenges seguindo a seguinte estrutura:
  • desafio1.js, desafio2.js, ..., desafioN.js
  1. Adicione as mudanças ao stage do Git e faça um commit
  • Verifique que as mudanças ainda não estão no stage
    • Exemplo: git status (deve aparecer o arquivo que você alterou como desafio1.js)
  • Adicione o novo arquivo ao stage do Git
    • Exemplo:
      • git add . (adicionando arquivo de solução challenges/desafio1.js para desafio 1)
      • git status (deve aparecer listado o arquivo challenges/desafio1.js em verde)
  • Faça o commit inicial
    • Exemplo:
      • git commit -m 'iniciando o projeto MongoDB dataflights' (fazendo o primeiro commit)
      • git status (deve aparecer uma mensagem tipo nothing to commit )
  1. Adicione a sua branch com o novo commit ao repositório remoto
  • Usando o exemplo anterior: git push -u origin seunome-mongodb-dataflights
  1. Crie um novo Pull Request (PR)
  • Vá até a página de Pull Requests do repositório no GitHub
  • Clique no botão verde "New pull request"
  • Clique na caixa de seleção "Compare" e escolha a sua branch com atenção
  • Clique no botão verde "Create pull request"
  • Adicione uma descrição para o Pull Request e clique no botão verde "Create pull request"
  • Não se preocupe em preencher mais nada por enquanto!
  • Volte até a página de Pull Requests do repositório e confira que o seu Pull Request está criado

Entregáveis

Temos, neste projeto, uma série de desafios com diferentes níveis de complexidade que devem ser resolvidos cada um em seu arquivo próprio.

  1. Leia a pergunta e crie no diretório challenges um arquivo chamado desafioN.js, em que N é o número do desafio.

  2. O arquivo deve conter apenas o código MQL (Mongo Query Language) do desafio resolvido. Não se esqueça de incluir o ponto e vírgula (";") no final de suas queries, como no exemplo a seguir:

    db.voos.find();

    ⚠️ Restrições ⚠️:

    • Não se deve usar aspas simples para especificar campos e/ou valores. Quando for necessário usar aspas, use somente aspas duplas;

    • Não se deve usar o comando use dataFlights, haja visto que os testes já se conectam automaticamente à base dataFlights.

  3. Faça isso até finalizar todos os desafios e depois siga as instruções de como entregar o projeto em Instruções para entregar seu projeto.

  4. Para entregar o seu projeto você deverá criar um Pull Request neste repositório. Este Pull Request deverá conter no diretório challenges os arquivos desafio1.js, desafio2.js e assim por diante até o desafio28.js, que conterão seu código MQL de cada desafio, respectivamente.

⚠️ É importante que seus arquivos tenham exatamente estes nomes! ⚠️

Qualquer dúvida, procure a monitoria. Lembre-se que você pode consultar nosso conteúdo sobre Git & GitHub sempre que precisar!


O que deverá ser desenvolvido

Hoje você fará um projeto com o codinome dataflights. Neste projeto, você praticará todos os conceitos de MongoDB já ensinados até aqui.

Porém, você usará um banco de dados diferente dos utilizados nos exemplos e exercícios vistos até agora. Chamaremos esse banco de dataFlights. As instruções de como restaurar o banco podem ser lidas a seguir.


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 (veja como fazer isso aqui).

  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 comando 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.


Requisitos do projeto

Desafio 1

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

Desafio 2

Retorne os 10 primeiros documentos com voos da empresa AZUL.

Desafio 3

Retorne a quantidade de voos da empresa AZUL.

Desafio 4

Retorne a quantidade de voos da empresa GOL.

Desafio 5

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

Desafio 6

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

Desafio 7

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

Desafio 8

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

Desafio 9

Retorne a quantidade de voos dos anos de 2017 e 2018.

Desafio 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.

Desafio 11

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

Desafio 12

Conte os documentos em que o campo aeroportoDestino.pais seja igual a BRASIL, ARGENTINA ou CHILE.

Desafio 13

Conte os documentos em que o campo aeroportoDestino.continente não seja igual a EUROPA, ÁSIA e OCEANIA.

Desafio 14

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

Desafio 15

Retorne o total de voos com mais de 20 decolagens.

Desafio 16

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

Desafio 17

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

Desafio 18

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

Desafio 19

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

Desafio 20

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

Desafio 21

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

Desafio 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.

Desafio 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.

Desafio 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.

Desafio 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.

Desafio 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.

Desafio 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.

Desafio 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.


DURANTE O DESENVOLVIMENTO

  • LEMBRE-SE DE CRIAR TODOS OS ARQUIVOS DENTRO DA PASTA challenges

  • Faça commits das alterações que você fizer no código regularmente

  • Lembre-se de sempre após um (ou alguns) commits atualizar o repositório remoto

  • Os comandos que você utilizará com mais frequência são:

    1. git status (para verificar o que está em vermelho - fora do stage - e o que está em verde - no stage)
    2. git add (para adicionar arquivos ao stage do Git)
    3. git commit (para criar um commit com os arquivos que estão no stage do Git)
    4. git push -u nome-da-branch (para enviar o commit para o repositório remoto na primeira vez que fizer o push de uma nova branch)
    5. git push (para enviar o commit para o repositório remoto após o passo anterior)

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-04.

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


REVISANDO UM PULL REQUEST

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

#VQV 🚀