{"id":24482343,"url":"https://github.com/jvictornascimento/workshop-spring-boot-mongodb","last_synced_at":"2026-04-12T18:04:54.814Z","repository":{"id":271107879,"uuid":"728920189","full_name":"jvictornascimento/workshop-spring-boot-mongodb","owner":"jvictornascimento","description":"Compreender as principais diferenças entre paradigma orientado a documentos e relacional","archived":false,"fork":false,"pushed_at":"2025-01-05T14:54:32.000Z","size":90,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-21T12:13:22.445Z","etag":null,"topics":["docker","dockerhub","java17","maven","mongodb","spring-boot"],"latest_commit_sha":null,"homepage":"","language":"Java","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/jvictornascimento.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-12-08T01:44:34.000Z","updated_at":"2025-01-05T23:07:11.000Z","dependencies_parsed_at":"2025-01-05T15:34:06.789Z","dependency_job_id":"156cb217-93aa-4867-bb08-69442e02afaf","html_url":"https://github.com/jvictornascimento/workshop-spring-boot-mongodb","commit_stats":null,"previous_names":["jvictornascimento/workshop-spring-boot-mongodb"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvictornascimento%2Fworkshop-spring-boot-mongodb","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvictornascimento%2Fworkshop-spring-boot-mongodb/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvictornascimento%2Fworkshop-spring-boot-mongodb/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jvictornascimento%2Fworkshop-spring-boot-mongodb/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jvictornascimento","download_url":"https://codeload.github.com/jvictornascimento/workshop-spring-boot-mongodb/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243633151,"owners_count":20322539,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["docker","dockerhub","java17","maven","mongodb","spring-boot"],"created_at":"2025-01-21T12:13:27.046Z","updated_at":"2025-12-28T19:05:20.857Z","avatar_url":"https://github.com/jvictornascimento.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eProjeto MongoDB com Spring Boot\u003c/h1\u003e\n\n![Badge Concluído](https://img.shields.io/static/v1?label=Status\u0026message=Concluido\u0026color=gren\u0026style=for-the-badge)\n![Badge Java](https://img.shields.io/static/v1?label=Java\u0026message=17\u0026color=red\u0026style=for-the-badge\u0026logo=Java)\n![Badge Spring](https://img.shields.io/static/v1?label=SpringBoot\u0026message=v3.2.0\u0026color=brightgreen\u0026style=for-the-badge\u0026logo=SpringBoot)\n![Badge MongoDb](https://img.shields.io/static/v1?label=Mongo\u0026message=V8.0\u0026color=green\u0026style=for-the-badge\u0026logo=Mongodb)\n\n## Resumo do projeto\n#### Curso: Programação Orientada a Objetos com Java\n#### http://educandoweb.com.br\n#### Prof. Dr. Nelio Alves\n- Compreender as principais diferenças entre paradigma orientado a documentos e relacional\n- Implementar operações de CRUD\n- Refletir sobre decisões de design para um banco de dados orientado a documentos\n- Implementar associações entre objetos\n  - Objetos aninhados\n  - Referências\n- Realizar consultas com Spring Data e MongoRepository\n\n## Funcionalidades\n\n### Usuario \u003c/br\u003e\n- `Cadastrar`: Cadastro de Usuarios através de um **POST /users** com as informações de *name* e *email* do\n  usuario no corpo da requisição. Segue abaixo um exemplo do **corpo da requisição**.\u003c/br\u003e\u003c/br\u003e\n\n  ```[json\n    {\n      \"name\" : \"Lorem Ipsum\",\n      \"email\" : \"lorem@email.com\"\n    }\n  ```\n\n- `Atualizar`: Atualizar usuario através de um **PUT /users/{ID}**, onde *{ID}* é o identificador do usuario,\n  os novos dados do usuario devem ser enviados no corpo da requisição. Segue abaixo um exemplo do **corpo da requisição**.\u003c/br\u003e\u003c/br\u003e\n\n  ```[json\n    {\n      \"name\" : \"Lorem Ipsum\",\n      \"email\" : \"lorem@email.com\"\n    }\n  ```\n\n- `Deletar`: Deletar usuario através de um **DELETE /users/{ID}**, onde *{ID}* é o identificador do usuario.\u003c/br\u003e\u003c/br\u003e\n\n\n- `Buscar por id`: Busca usuario por id através de um **GET /users/{ID}**, onde *{ID}* é o identificador do usuario.\n  Segue abaixo um exemplo do **corpo da resposta**.\u003c/br\u003e\u003c/br\u003e\n\n  ```[json\n    {\n        \"id\": \"6779cf8e2a6bfc616784c4df\",\n        \"name\": \"Maria fazendeira\",\n        \"email\": \"maria@email.com\"\n    }   \n    ```\n  \n\n- `Buscar por todos os usuaios`: Busca através de um **GET /users**, .\n  Segue abaixo um exemplo do **corpo da resposta**.\u003c/br\u003e\u003c/br\u003e\n\n  ```[json\n         [\n             {\n                 \"id\": \"6779cf8e2a6bfc616784c4df\",\n                 \"name\": \"Maria fazendeira\",\n                 \"email\": \"maria@email.com\"\n             },\n             {\n                 \"id\": \"6779cf8e2a6bfc616784c4e0\",\n                 \"name\": \"jose padeiro\",\n                 \"email\": \"jose@email.com\"\n             },\n             {\n                 \"id\": \"6779cf8e2a6bfc616784c4e1\",\n                 \"name\": \"antonio leiteiro\",\n                 \"email\": \"antonio@email.com\"\n            }\n        ]\n  ```\n### Posts \u003c/br\u003e\n  - `Buscar por id`: Busca um post por id através de um **GET /post/{ID}**, onde *{ID}* é o identificador do post.\n    Segue abaixo um exemplo do **corpo da resposta**.\u003c/br\u003e\u003c/br\u003e\n\n    ```[json\n        {\n        \"id\": \"677a989fea0a620c5f0f8fa5\",\n        \"date\": \"2018-03-23T00:00:00.000+00:00\",\n        \"title\": \"Bom dia \",\n        \"body\": \"Acordei feliz hoje!\",\n         \"author\": {\n            \"id\": \"677a989fea0a620c5f0f8fa2\",\n            \"name\": \"Maria fazendeira\"\n        },\n        \"comments\": [\n          {\n            \"text\": \"Aproveite\",\n            \"date\": \"2018-03-22T00:00:00.000+00:00\",\n            \"author\": {\n              \"id\": \"677a989fea0a620c5f0f8fa3\",\n              \"name\": \"jose padeiro\"\n            } \n          }\n         ]\n        } \n      ```\n    - `Buscar por titulo`: Busca um post por palavras contidas no titulo através de um **GET /post/titlesearch?text=bom**.\n      Segue abaixo um exemplo do **corpo da resposta**.\u003c/br\u003e\u003c/br\u003e\n\n    ```[json\n        {\n        \"id\": \"677a989fea0a620c5f0f8fa5\",\n        \"date\": \"2018-03-23T00:00:00.000+00:00\",\n        \"title\": \"Bom dia \",\n        \"body\": \"Acordei feliz hoje!\",\n         \"author\": {\n            \"id\": \"677a989fea0a620c5f0f8fa2\",\n            \"name\": \"Maria fazendeira\"\n        },\n        \"comments\": [\n          {\n            \"text\": \"Aproveite\",\n            \"date\": \"2018-03-22T00:00:00.000+00:00\",\n            \"author\": {\n              \"id\": \"677a989fea0a620c5f0f8fa3\",\n              \"name\": \"jose padeiro\"\n            } \n          }\n         ]\n        } \n      ```\n    - `Buscar Completa`: Busca um post por palavras contidas no titulo, no corpo ou nos comentarios podendo ta,bem filtrar por datas minimas e maximas através de um **GET /post/fullsearch?text=viagem**.\n      Segue abaixo um exemplo do **corpo da resposta**.\u003c/br\u003e\u003c/br\u003e\n````[json\n    {\n    \"id\": \"677a989fea0a620c5f0f8fa6\",\n    \"date\": \"2018-03-21T00:00:00.000+00:00\",\n    \"title\": \"Partiu Viagem\",\n    \"body\": \"Vou viajar para São Paulo. Abraços!\",\n    \"author\": {\n      \"id\": \"677a989fea0a620c5f0f8fa2\",\n      \"name\": \"Maria fazendeira\"\n    },\n    \"comments\": [\n    {\n      \"text\": \"Boa Viagem mano!\",\n      \"date\": \"2018-03-21T00:00:00.000+00:00\",\n      \"author\": {\n        \"id\": \"677a989fea0a620c5f0f8fa4\",\n        \"name\": \"antonio leiteiro\"\n      }\n    },\n    {\n      \"text\": \"Tenha um otimo dia!\",\n      \"date\": \"2018-03-23T00:00:00.000+00:00\",\n      \"author\": {\n        \"id\": \"677a989fea0a620c5f0f8fa4\",\n        \"name\": \"antonio leiteiro\"\n           }\n          }\n        ]\n      }\n    ]\n````\n    Obs: esse endpoin pode ser usado **GET /post/fullsearch?text=viagem**, **GET /post/fullsearch?mindate=23-03-2018**, **GET /post/fullsearch?maxdate=23-03-2018** ou **GET /post/fullsearch?text=viagem\u0026mindate=23-03-2018\u0026maxdate=24-03-20218** o resultado sera o mesmo json acima.\n\n\n\n\n\n## Criar container docker da aplicação\n\nExecute este aquivo [docker-compose.yaml](https://github.com/jvictornascimento/workshop-spring-boot-mongodb/blob/master/docker-compose.yaml). \nQue irá subir um container com uma imagem do mongoDB mais a imagem do projeto.\n\n  ```\n    docker-compose -f docker-compose.yaml up\n  ```\n\nApós subir os containers, todas as funcionaliades acima estaram disponivel em  \u003chttp://localhost:8080\u003e\n## Tecnologias\n\n- `Intellij`\n- `Java 17`\n- `Maven`\n- `Spring Boot, Spring MVC, Spring Data JPA, Spring Mongo`\n- `MongoDb`\n- `Docker, Docker-hub`\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjvictornascimento%2Fworkshop-spring-boot-mongodb","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjvictornascimento%2Fworkshop-spring-boot-mongodb","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjvictornascimento%2Fworkshop-spring-boot-mongodb/lists"}