Alura > Cursos de Programação > Cursos de .NET > Conteúdos de .NET > Primeiras aulas do curso .Net e MongoDB parte 1: integre aplicações .NET

.Net e MongoDB parte 1: integre aplicações .NET

Primeiros passos com MongoDB no .NET - Introdução

Me chamo Victorino Vila e este é o curso de .Net e MongoDB.

O curso abordará a manipulação de base de dados no MongoDB por meio do Visual Studio .NET, utilizando qualquer uma das linguagens que o framework da Microsoft suporta.

Primeiro vamos entender qual a importância do MongoDB, e por que utiliza-lo ao invés de bancos de dados relacionais. Em tela temos o exemplo de um site de notícias.

Temos o título da notícia e, logo abaixo, os nomes dos jornalistas autores da matéria. Ao lado dos nomes temos a indicação da sucursal, ou seja, o escritório onde a matéria foi elaborada. Em seguida temos o texto em si e, ao final, temos os comentários.

Os comentários podem ou não ter curtidas, respostas, e assim por diante.

Imaginemos que precisamos construir este site utilizando um banco de dados relacional. Sob esta ótica, deveríamos ter pelo menos três tabelas.

Uma tabela de notícias, contendo o ID da notícia, título, data, sucursal e conteúdo. Conectada a uma tabela de jornalistas, porque não necessariamente apenas um jornalista escreveu a matéria.

Por último teríamos uma tabela de comentários, que poderia ter ainda algum relacionamento entre ela mesma, se considerássemos as respostas.

Para construirmos um banco de dados relacional provavelmente teríamos de criar queries, utilizando unions ou joins, empregando as tabelas descritas acima.

De certa maneira, caso houvesse milhares de notícias em nosso banco de dados, isso resultaria em consultas muito complexas, com performance abaixo do esperado e de estrutura rígida.

Digamos que, hipoteticamente, nosso site está no ar e alguém solicite a criação de uma tag para esta página, de modo que num mecanismo de busca ela seja mais facilmente encontrada.

A tag é um assunto relacionado a um conteúdo. Por exemplo, em uma manchete onde lê-se "Brasil bate Equador, mantém 100% com Tite e ganha 'título' da Eliminatória", a tag pode ser esporte, ou Brasil, enfim, há uma série de identificadores, podendo haver uma ou mais tags.

Se fosse o caso de utilizarmos o banco de dados relacional deveríamos ter ainda mais uma tabela de tags ligada à tabela de notícias. Ou seja, teríamos que alterar a estrutura do nosso banco de dados e isso poderia comprometer as notícias antigas. Isso pode ser problemático caso não seja feita uma boa análise desse site.

Agora vamos estudar a hipótese de criarmos um banco de dados NoSQL, ou seja, cuja representação é feita por documentos, que são na verdade grandes strings, ou caracteres de texto.

Um dos bancos de dados mais utilizados no formato NoSQL é o MongoDB.

Se utilizarmos essa ferramenta para construir, por exemplo, um site de notícias, provavelmente a estrutura seria algo parecido com o exemplo abaixo.

{
    _id:Objectid("342784758374573845734")
Título:"Brasil bate equador .....",
Data:"31/08/2017 ....",
Sucursal: "Porto Alegre",
Jornalistas: [
    Marinho Saldanha,
    Pedro Ivo
],
Conteúdo: "xxxxxxxx",
Comentário: [
    {
        Assinante:"Newton42",
        Data:"30/08/2017",
        Comentário:"yyyyyyyy"
    },
    {
        Assinante:"Toletão"
        Data:"30/08/2017"
        Comentário: "yyyyyyyy"
    }
]
}

Temos um código JSON onde aparecem, em primeiro lugar o título da matéria, em seguida a data da publicação, a sucursal e, quando chegamos aos jornalistas, temos um array de nomes porque podem ser vários profissionais creditados, e logo após temos o conteúdo, que é o texto da notícia em si.

Finalmente, na parte dos comentários temos um vetor com uma outra expressão JSON, onde aparecem o nome do assinante, a data e o comentário do indivíduo.

A vantagem de utilizar o MongoDB é a possibilidade de termos, dentro de uma mesma coleção, documentos com JSONs diferentes, portanto, se o usuário quisesse que o site fosse controlado através de tags de assuntos, poderíamos fazer isso simplesmente criando uma nova estrutura JSON que incluísse um array onde apareceriam os tags de identificação de determinada notícia. O passado permaneceria sem o objeto tag e o futuro passaria a contar com isso. Portanto não é necessário re-desenhar o banco nem alterar a sua estrutura.

Entretanto, é importante notar que o MongoDB pode não ser aplicável em determinadas situações.

Seguindo o exemplo com o qual estamos trabalhando, podemos perceber que as tags são comandos strings livres, então não temos muito controle sobre o tipo de tag que vamos utilizar. Se for por exemplo "esportes", no plural, e alguém escrever "esporte" por um erro de digitação mas querendo falar do mesmo assunto, o MongoDB entenderá como coisas diferentes, por serem strings distintas.

No MongoDB não há integridade referencial entre os elementos do documento de uma única coleção, ou entre elementos das coleções.

Entretanto, em sites de redes sociais por exemplo, ou qualquer tipo de site que seja dinâmico e a estrutura de dados está sempre se modificando, os bancos de dados NoSQL e por exemplo o MongoDB são uma das melhores opções a serem utilizadas. Por isso é necessário sabermos identificar em quais casos o MongoDB vai ou não ser o melhor banco de dados para a sua aplicação, em vez de bancos de dados relacionais.

Um exemplo de site que faz uso do MongoDB é o Cartola FC. Trata-se de uma rede social onde o usuário compra e vende jogadores de futebol, e utiliza os seus scores no campeonato brasileiro para criar uma disputa de pontos entre os usuários. Por ser uma estrutura bastante complexa com inter-relacionamento muito forte, o MongoDB foi a melhor solução.

Outra rede social que utiliza o MongoDB é o Foursquare, que trabalha com curtidas dos usuários em restaurantes, bares, enfim, diversos estabelecimentos sobre os quais os membros podem opinar publicamente.

O MangoDB hoje já é considerado o quinto maior banco de dados do mundo, ainda distante da Oracle, SQL Server e DB2, por exemplo, mas em constante crescente nos últimos anos. Isso se dá por conta de sua flexibilidade e das necessidades de modelagem às quais o MongoDB vêm se adaptando muito mais facilmente.

O foco deste curso é estudarmos como é possível manipular o MongoDB dentro do Visual Studio .NET. Utilizaremos em nossos exemplos a linguagem C#.

Faremos um grande projeto no qual serão criados diversos programas, cada um evidenciando qual é a interface do C# com o MongoDB, feito a partir de um modelo de console, onde iremos colocar na tela somente a resposta, e depois faremos duas aplicações práticas utilizando ASP.NET MVC.

O primeiro exemplo é uma aplicação de blog com registro de usuários, com o acesso vinculado ao seu e-mail, possibilitando a visualização do conteúdo e permitindo que sejam deixados comentários e a busca de publicações pela tag relacionada.

A próxima aplicação que faremos utilizará mapas, georreferenciamento. Ela nos permitirá pesquisar aeroportos a partir da entrada de uma cidade e do raio desejado. A partir disso ela mostrará automaticamente um mapa onde o ponto verde representa a localização do usuário, e os pontos em vermelho são os aeroportos localizados dentro do raio definido por ele.

Vamos estudar ainda como instalar o MongoDB num ambiente Windows e aprender como ele pode se tornar um serviço deste OS na nossa máquina. Além disso, vamos trabalhar com uma aplicação que se chama Robomongo, ou Robo 3T, que permite visualizar a estrutura do MongoDB de forma mais fácil do que simplesmente na interface padrão em linhas de comando, apesar de ela continuar existindo.

Finalmente, vamos utilizar o Visual Studio 2017 e aprender como criar em nossos projetos a referência e o acesso ao MongoDB.

Primeiros passos com MongoDB no .NET - Instalando e configurando o MongoDB

Agora vamos realizar a instalação do MongoDB no ambiente Windows. Como pré-requisito temos, em primeiro lugar, a utilização do OS Windows, que pode ser tanto na versão 10 ou 7.

Para os exercícios posteriores, utilizaremos o Visual Studio 2017. Caso já utilize a versão Enterprise, ou Professional, não há problema, podemos trabalhar com estas versões do produto.

Caso não tenha ainda o software, ele será encontrado no site da Microsoft na versão 2017 Community Edition.

A primeira coisa que vamos fazer é, no browser, abrir um site de buscas e pesquisar por "MongoDB download". Será exibida uma série de links, selecionaremos a opção "MongoDB Download Center".

página de download do MongoDB - MongoDB download center

Uma vez na página, clicaremos a opção "Community Server". O próximo passo é verificar se estamos instalando a versão 3.4.9, para a plataforma Windows.

Há três versões de MongoDB disponíveis para instalção, trabalharemos com "Windows Server 2008 64-bit, without SSL support x64", que é a opção direcionada para máquinas pessoais, as demais são opções corporativas, que não servem para o nosso caso.

Feita a seleção, faremos o download e, depois, executaremos o arquivo. Surgirá uma caixa de diálogo de instalação apresentando o Setup, vamos clicar em "Next", em seguida aceitamos os termos e condições. Seguiremos para a próxima página, onde escolheremos a instalação completa e clicamos no botão "Install".

caixa de diálogo do setup de instalação do MongoDB onde lemos a informação de que será instalada a versão 3.4.9 e temos a opção de ir para a próxima página ou de cancelar

caixa de setup de instalação onde temos os termos e condições de instalação do MongoDB e abaixo há uma caixa que deve ser clicada para concordar com os termos. Logo abaixo temos as opções imprimir, voltar, próximo ou cancelar

caixa de diálogo do setup de instalação em que temos a opção de instalação completa ou instalação customizada

última caixa de diálogo da instalação, temos as opções de voltar, instalar ou cancelar

A próxima caixa de diálogo mostra o progresso da instalação até que esteja completa, o que costuma ser rápido.

Após a instalação, é importante sabermos onde a aplicação está salva. Caso não tenha sido alterado o caminho padrão de instalação, ele deve se encontrar em "Disco Local > Arquivos de Programas > MongoDB > Server > 3.4 > bin".

Existem duas aplicações importantes no MongoDB. A primeira é o Mongod, que é um servidor de bancos de dados, e o Mongo, uma aplicação shell, com a qual digitaremos os comandos de interação, inclusão, exclusão ou busca de um determinado documento dentro do banco de dados do MongoDB.

Por se tratar de uma aplicação shell, para executá-la temos que abrir a aplicação de linha de comandos do Windows (Prompt de Comando).

Se, por exemplo, aplicarmos o comando "mongod", que serve para inicializar o servidor de bancos de dados, observaremos que o sistema operacional não reconhece a sua localização.

Para que esse reconhecimento seja feito automaticamente, iremos configurar na variável Path do Windows, o caminho onde o MongoDB está instalado.

Então, o próximo passo é selecionar "Painel de Controle > Sistema > Configurações avançadas do sistema". Surgirá uma caixa de diálogo onde escolheremos a opção "Varáveis de Ambiente".

janela de diálogo das variáveis de ambiente

Uma nova janela surgirá, onde observaremos todas as variáveis de ambiente do sistema operacional. Depois, selecionaremos a variável de ambiente Path e clicar no botão "Editar".

selecionando a variável path dentre as opções do Windows

Surgirá uma nova caixa de diálogo onde estarão listados todos os caminhos inclusos dentro desta variável no ambiente Windows.

Criaremos uma nova variável e, para isso, precisamos primeiro ir ao diretório onde está instalado o MongoDB e copiar o endereço. Feito isso, retornamos à caixa de diálogo anterior e criamos um novo path, clicando no botão "Novo" e colando o caminho. Em seguida confirmamos.

Feito isso, abrimos novamente a tela de comandos do Windows e digitamos novamente o comando "Mongod", agora veremos a localização do servidor da aplicação já dentro do sistema operacional.

Apesar de termos inserido na variável path a localização do diretório onde o MongoDB foi instalado, ao tentar subir o banco, essa operação não foi concluída com sucesso.

Microsoft Windows[versão 10.0.15063]
(c) 2017 Microsoft Corporation. Todos os direitos reservados. 

C:\Users\Caelum>mongod
2017-09-27T14:13:49.532-0300 I CONTROL  [initandlisten] MongoDB starting : pid=5832 port=27017 dbpath=C: \data\db 64-bit host=DESKTOP-PS11VIM
2017-09-27t14:13:49.532-0300 I CONTROL  [initandlisten] targetMinOS: Windows Vista/Windows Server 2008
2017-09-27t14:13:49.532-0300 I CONTROL  [initandlisten] db version v3.4.9
2017-09-27t14:13:49.532-0300 I CONTROL  [initandlisten] git version: 876ebee8c7dd0e2d992f36a848ff4dc50ee6603e
2017-09-27t14:13:49.532-0300 I CONTROL  [initandlisten] allocator: tcmalloc
2017-09-27t14:13:49.532-0300 I CONTROL  [initandlisten] modules: none
2017-09-27t14:13:49.532-0300 I CONTROL  [initandlisten] build environment:
2017-09-27t14:13:49.532-0300 I CONTROL  [initandlisten]     distarch: x86_64
2017-09-27t14:13:49.532-0300 I CONTROL  [initandlisten]     target_arch: x86_64
2017-09-27t14:13:49.532-0300 I CONTROL  [initandlisten] options: {}
2017-09-27t14:13:49.532-0300 I STORAGE  [initandlisten] exception in initAndListen: 29 Data directory C:\data\db\not found., terminating
2017-09-27t14:13:49.532-0300 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2017-09-27t14:13:49.532-0300 I NETWORK  [initandlisten] shutdown: going to flush dialog...
2017-09-27t14:13:49.532-0300 I CONTROL  [initandlisten] now exiting
2017-09-27t14:13:49.532-0300 I CONTROL  [initandlisten] shutting down with code:100

C:\Users\Caelum>

Ele não conseguiu encontrar o diretório, que é a localização onde os dados do MongoDB serão criados. Por padrão, a aplicação sempre tentará criar um no diretório C:\data\db. É possível alterar isso posteriormente nas configuraçãoes do MongoDB.

Vamos então inserir nosso diretório manualmente, continuando o código acima:

C:\Users\Caelum> cd..

C:\Users>cd..

C:\>md data

C:\>cd data

C:\data>md db

C:\data>cd db

C:\data\db>mongod

Feito isso, teremos o servidor do MongoDB inicializado. Se observarmos o início do nosso código veremos que ele localizou o diretório, portanto, o servidor está no ar.

janela do código ilustrando que o diretório foi encontrado

Esta janela de prompt deverá permanecer aberta sempre, ainda que minimizada, caso contrário seria como se estivéssemos fazendo um shut down do servidor. Assim demonstramos que o MongoDB está no ar, disponível para receber requisições de qualquer cliente.

Primeiros passos com MongoDB no .NET - Instalando o MongoDB como serviço

Existe uma outra maneira de utilizarmos o MongoDB sem a necessidade de mantermos a janela do Prompt de Comando aberta. Para isso, vamos instalar o MongoDB como um serviço do Windows.

Vamos abrir o Prompt de Comando mas, desta vez, clicando com o botão direito do mouse sobre seu ícone vamos selecionar a opção para "Executar como administrador".

Uma vez aberto, vamos digitar o seguinte comando, onde teremos como parâmetro --install e, onde vamos inserir um segundo parâmetro indicando a localização de um log, que será criado automaticamente durante a instalação do MongoDB como serviço do Windows.

C:\Windows\system32>mongod --install --logpath="c:\data\log.txt"

Feito isso, utilizamos o comando "ENTER" e, se nada acontecer, significa que a instalação foi concluída.

Se pesquisarmos em nosso diretório, veremos na localização "c:\data" um arquivo "log.txt". Nele, veremos que a instalação foi concluída com sucesso.

Se abrirmos o "Painel de Controle > Ferramentas Administrativas > Serviços", poderemos observar que temos agora o serviço do MongoDB criado. Vamos clicar sobre o ícone da aplicação e inicializar o serviço, dessa forma ele estará no ar. Sendo assim não há necessidade de mantermos a janela de Prompt aberta.

Sobre o curso .Net e MongoDB parte 1: integre aplicações .NET

O curso .Net e MongoDB parte 1: integre aplicações .NET possui 172 minutos de vídeos, em um total de 55 atividades. Gostou? Conheça nossos outros cursos de .NET em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda .NET acessando integralmente esse e outros cursos, comece hoje!

Plus

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$85
à vista R$1.020
Matricule-se

Pro

  • Acesso a TODOS os cursos da plataforma

    Mais de 1200 cursos completamente atualizados, com novos lançamentos todas as semanas, em Programação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

12X
R$120
à vista R$1.440
Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas