{"id":21894362,"url":"https://github.com/ludson96/project-mongodb-commerce","last_synced_at":"2026-04-29T23:31:33.414Z","repository":{"id":103820977,"uuid":"599254159","full_name":"ludson96/project-mongodb-commerce","owner":"ludson96","description":"Neste projeto utilizamos o banco NoSQL MongoDb, manipulamos o banco de dados commerce, que contém dados do cardápio do McDonald's, como ingredientes, valores nutricionais e dados fictícios de vendas ","archived":false,"fork":false,"pushed_at":"2024-04-10T12:42:02.000Z","size":97,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-03T14:54:14.813Z","etag":null,"topics":["backend","crud","docker","eslint","mongodb","mongodb-database","nosql","query"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ludson96.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-08T19:09:48.000Z","updated_at":"2023-02-08T20:26:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"fffe17f5-98c8-473c-a4fa-4a4a25e970cf","html_url":"https://github.com/ludson96/project-mongodb-commerce","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ludson96/project-mongodb-commerce","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ludson96%2Fproject-mongodb-commerce","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ludson96%2Fproject-mongodb-commerce/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ludson96%2Fproject-mongodb-commerce/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ludson96%2Fproject-mongodb-commerce/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ludson96","download_url":"https://codeload.github.com/ludson96/project-mongodb-commerce/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ludson96%2Fproject-mongodb-commerce/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32448354,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"ssl_error","status_checked_at":"2026-04-29T22:10:49.234Z","response_time":110,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backend","crud","docker","eslint","mongodb","mongodb-database","nosql","query"],"created_at":"2024-11-28T13:22:11.015Z","updated_at":"2026-04-29T23:31:33.399Z","avatar_url":"https://github.com/ludson96.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Repositório do projeto Mongodb Commerce 💼\n\n## Módulo: BACK-END\n\n Repositório possuí projeto desenvolvido no período que estive na **Trybe**, abordando os conceitos **CRUD** completo em **MongoDB**.\n\n## Informações de aprendizados\n\n- Este é um projeto desenvolvido para me ajudar a aprender `Mongodb`;\n- Meu primeiro projeto usando `Mongodb`;\n- Utilizei a extensão do VSCode `MongoDB for VS Code` para realizar as operações.\n\n## Linguagem usadas\n\n[![Mongo][Mongo-logo]][Mongo-url]\n[![Docker][Docker-logo]][Docker-url]\n[![ESLint][ESLint-logo]][ESLint-url]\n\n## O que foi desenvolvido\n\nNeste projeto utilizamos o banco NoSQL MongoDb, manipulamos o banco de dados commerce, que contém dados do cardápio do McDonald's, como ingredientes, valores nutricionais e dados fictícios de vendas .\n\n## Instruções para instalar e rodar\n\n1. Clone o repo:\n\n    ```bash\n    git clone git@github.com:Ludson96/project-mongodb-commerce.git\n    ```\n\n1. Entre na pasta do repositório que você acabou de clonar:\n\n    ```bash\n    cd project-mongodb-commerce\n    ```\n\n1. Instale as dependências e inicialize o projeto:\n\n    ```bash\n    npm install\n    ```\n\n1. Caso queira utilizar o mongodb pelo docker execute o seguinte comando:\n\n    ```bash\n    docker run -d --name=nomeDoContainer -v \"$PWD:/app\" -p 27017:27017 mongo:5.0;\n    ```\n\n1. Utilize o arquivo do banco de dados no `assets` o `produtos.bson`\n\n## Uso\n\nDentro da pasta `challenges` estão numerados comandos do mongodb, e logo abaixo seu respectivo desafio proposto pela **Trybe**.\n\n## Desafios\n\n\u003cdetails\u003e\n\n### 1 - Retorne a quantidade de documentos inseridos na coleção `produtos`\n\n- `desafio1.js`\n\n### 2 - Ordene a coleção `produtos` pela quantidade de lanches vendidos em ordem crescente, mostrando apenas o `nome` e a quantidade de lanches `vendidos`\n\n- `desafio2.js`\n\n### 3 - Retorne o lanche mais vendido, mostrando apenas o `nome` e a quantidade do lanche mais vendido\n\n- `desafio3.js`\n\n### 4 - Retorne os lanches que tiveram vendas maiores que `50` e menores que `100`, mostrando apenas o nome e a quantidade de lanches `vendidos` em ordem crescente\n\n- `desafio4.js`\n\n### 5 - Retorne o `nome`, as `curtidas` e `vendidos` dos lanches que tiveram quantidade de `curtidas` igual a `36` ou tenham a quantidade de vendas igual a `85`\n\n- `desafio5.js`\n\n### 6 - Retorne o `nome` e as `curtidas` dos lanches que tiveram curtidas maiores que `10` e menores que `100`\n\n- `desafio6.js`\n\n### 7 - Retorne o `nome` e `vendidos` dos lanches que tenham sido `vendidos` com uma quantidade diferente de `50` e em que o campo `tags` não exista\n\n- `desafio7.js`\n\n### 8 - Delete os lanches com menos de `50` `curtidas` e retorne o `nome` dos lanches que restaram no banco\n\n- `desafio8.js`\n\n### 9 - Retorne o `nome` de todos os lanches que possuam `calorias` abaixo de `500`\n\n- `desafio9.js`.\n\n### 10 - Retorne o `nome` de todos os lanches que tenham o percentual de `proteínas` maior ou igual a `30` e menor ou igual a `40`\n\n- `desafio10.js`\n\n### 11 - Retorne o `nome` do produto, a quantidade de `curtidas` e quantos itens foram `vendidos` dos produtos que não sejam iguais a `Big Mac` e `McChicken`\n\n- `desafio11.js`\n\n### 12 - Adicione `ketchup` aos `ingredientes` para todos os sanduíches menos o `McChicken`, garantindo que não haja duplicidade nos `ingredientes`\n\n- `desafio12.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que adicione `ketchup` aos `ingredientes` para todos os sanduíches menos o `McChicken`, garantindo que não haja duplicidade nos `ingredientes`.\n\n2. Crie uma query que retorne o `nome` e `ingredientes` de todos os documentos.\n\n### 13 - Inclua o campo `criadoPor` em todos os documentos, colocando `Ronald McDonald` no valor desse campo\n\n- `desafio13.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que adicione o campo `criadoPor` em todos os documentos, colocando `\"Ronald McDonald\"` no valor desse campo.\n\n2. Crie uma query que retorne o `nome` e `criadoPor` de todos os produtos.\n\n### 14 - Crie uma query que retorne todos os lanches que possuem *picles* em seus ingredientes e mostre apenas os `3` primeiros itens contidos no array `valoresNutricionais`\n\n- `desafio14.js`\n- Sua query deve retornar apenas os campos `nome`, `ingredientes` e `valoresNutricionais`.\n\n### 15 - Adicione o campo `avaliacao` em todos os documentos da coleção e efetue alterações nesse campo\n\n- `desafio15.js` quatro queries, **nesta ordem**:\n\n1. Crie uma query que inclua o campo `avaliacao` do tipo `NumberInt`, com o valor `0` em todos os documentos da coleção.\n\n2. Crie uma query que incremente o valor do campo `avaliacao` em `5` em todos os sanduíches de carne do tipo `bovino`.\n\n3. Crie uma query que incremente o valor do campo `avaliacao` em `3` em todos os sanduíches de `ave`.\n\n4. Crie uma query que retorne o `nome` e `avaliacao` de todos os sanduíches.\n\n### 16 - Adicione o campo `ultimaModificacao` com a data corrente somente no sanduíche `Big Mac`\n\n- `desafio16.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que inclua somente ao sanduíche `Big Mac` o campo `ultimaModificacao` com a data corrente. Para a data corrente faça uso do tipo `date` ou `timestamp`.\n\n2. Crie uma query que retorne o `nome` de todos os documentos em que o campo `ultimaModificacao` existe.\n\n### 17 - Retorne a quantidade total de produtos em uma nova coleção chamada `resumoProdutos`\n\n- `desafio17.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que insira na coleção `resumoProdutos` um documento com os campos: `franquia` com o valor `McDonalds` e `totalProdutos` com o valor sendo a quantidade total de produtos registrados na coleção `produtos`.\n\n2. Crie uma query que retorne os campos `franquia` e o `totalProdutos` da coleção `resumoProdutos`, resultantes da primeira query.\n\n### 18 - Inclua `bacon` no final da lista de `ingredientes` dos sanduíches `Big Mac` e `Quarteirão com Queijo`\n\n- `desafio18.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que faça a inclusão de `bacon` no final da lista de `ingredientes` dos sanduíches `Big Mac` e `Quarteirão com Queijo`.\n\n2. Crie uma query que retorne o `nome` e `ingredientes` de todos os documentos.\n\n### 19 - Remova o item `cebola` de todos os sanduíches\n\n- `desafio19.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que faça a remoção do item `cebola` em todos os sanduíches.\n\n2. Crie uma query que retorne o `nome` e `ingredientes` de todos os documentos.\n\n### 20 - Remova o primeiro `ingrediente` do sanduíche `Quarteirão com Queijo`\n\n- `desafio20.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que faça a remoção do **primeiro** `ingrediente` no sanduíche `Quarteirão com Queijo`.\n\n2. Crie uma query que retorne o `nome` e `ingredientes` de todos os documentos.\n\n### 21 - Remova o último `ingrediente` do sanduíche `Cheddar McMelt`\n\n- `desafio21.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que faça a remoção do **último** `ingrediente` no sanduíche `Cheddar McMelt`.\n\n2. Crie uma query que retorne o `nome` e `ingredientes` de todos os documentos.\n\n### 22 - Adicione a quantidade de vendas dos sanduíches por dia da semana\n\n- `desafio22.js` quatro queries, **nesta ordem**:\n\n1. Crie uma query que inclua um campo `vendasPorDia` em todos os sanduíches. O valor deste campo deverá ser um **array** com sete posições. Cada uma delas representará um dia da semana, e cada posição iniciará em `0`. O **array** deve seguir a estrutura do exemplo abaixo:\n\n    ```json\n    \"vendasPorDia\": [0, 0, 0, 0, 0, 0, 0]\n    ```\n\n    \u003e O primeiro item desse **array** representa as vendas no **domingo**, o segundo item representa as vendas na **segunda-feira**, e assim sucessivamente até chegar ao último item, que representa as vendas no **sábado**.\n\n1. Crie uma query que incremente as vendas de `Big Mac` às **quartas-feiras** em `60`.\n\n1. Crie uma query que incremente as vendas de todos os sanduíches de carne do tipo `bovino` aos **sábados** em `120`.\n\n1. Crie uma query que retorne o `nome` e `vendasPorDia` de todos os documentos.\n\n### 23 - Insira os valores `combo` e `tasty` no **array** `tags` de todos os sanduíches e aproveite para deixar os valores em ordem alfabética ascendente (A a Z)\n\n- `desafio23.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que faça tanto a inserção dos valores `combo` e `tasty` no **array** `tags` de todos os sanduíches. Ordene os valores de `tags` em ordem alfabética ascendente.\n\n2. Crie uma query que retorne o `nome` e `tags` de todos os documentos.\n\n### 24 - Ordene em todos os documentos os valores do **array** `valoresNutricionais` pelo campo `percentual` de forma decrescente\n\n- `desafio24.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que faça em todos os documentos a ordenação dos valores do **array** `valoresNutricionais` pelo campo `percentual` de forma decrescente.\n\n2. Crie uma query que retorne o `nome` e `valoresNutricionais` de todos os documentos.\n\n### 25 - Adicione o valor `muito sódio` ao final do **array** `tags` nos produtos em que o `percentual` de `sódio` seja maior ou igual a `40`\n\n- `desafio25.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que faça a adição do valor `muito sódio` ao final do **array** `tags` nos produtos em que o `percentual` de `sódio` seja maior ou igual a `40`.\n\n2. Crie uma query que retorne o `nome` e `tags` de todos os documentos.\n\n### 26 - Adicione o valor `contém sódio` ao final do **array** `tags` nos produtos em que o `percentual` de `sódio` seja maior do que `20` e menor do que `40`\n\n- `desafio26.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que faça a adição do valor `contém sódio` ao final do **array** `tags` nos produtos em que o `percentual` de `sódio` seja maior do que `20` e menor do que `40`.\n\n2. Crie uma query que retorne o `nome` e `tags` de todos os documentos.\n\n### 27 - Conte quantos produtos contém `Mc` no nome, sem considerar letras maiúsculas ou minúsculas\n\n- `desafio27.js`\n\n### 28 - Conte quantos produtos têm `4` ingredientes\n\n- `desafio28.js`\n\n### 29 - Renomeie o campo `descricao` para `descricaoSite` em todos os documentos\n\n- `desafio29.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que faça a renomeação do campo `descricao` para `descricaoSite` em todos os documentos.\n\n2. Crie uma query que retorne o `nome` e `descricaoSite` de todos os documentos.\n\n### 30 - Remova o campo `curtidas` do item `Big Mac`\n\n- `desafio30.js` duas queries, **nesta ordem**:\n\n1. Crie uma query que faça a remoção do campo `curtidas` do item `Big Mac`.\n\n2. Crie uma query que retorne o `nome` para todos os documentos e `curtidas` (exceto para `Big Mac`).\n\n### 31 - Retorne o `nome` dos sanduíches em que o número de `curtidas` é maior que o número de sanduíches `vendidos`\n\n- `desafio31.js`\n\n### 32 - Retorne o `nome` e a quantidade de vendas (`vendidos`) dos sanduíches em que o número de vendas é múltiplo de `5`\n\n- `desafio32.js`\n\n\u003c/details\u003e\n\n\u003e `produtos.bson` fornecidos pela Trybe.\n\n[Mongo-url]:https://www.mongodb.com/\n[Mongo-logo]: https://img.shields.io/badge/MongoDB-%234ea94b.svg?style=for-the-badge\u0026logo=mongodb\u0026logoColor=white\n[Docker-logo]: https://img.shields.io/badge/docker-%230db7ed.svg?style=for-the-badge\u0026logo=docker\u0026logoColor=white\n[Docker-url]: https://www.docker.com\n[ESLint-logo]: https://img.shields.io/badge/ESLint-4B3263?style=for-the-badge\u0026logo=eslint\u0026logoColor=white\n[ESLint-url]: https://eslint.org/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fludson96%2Fproject-mongodb-commerce","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fludson96%2Fproject-mongodb-commerce","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fludson96%2Fproject-mongodb-commerce/lists"}