.NET

5 fev, 2014

MongoDB – CRUD com C#

Publicidade

Muito se ouve falar em NOSQL e também em sua aplicabilidade para trabalhar com grande velocidade numa massa de dados gigante. Quero mostrar como inserir, ler, atualizar e remover dados de uma base de dados MongoDB. É super fácil e após você fazer isso uma vez, com certeza terá mais uma opção para trabalhar em suas aplicações.

Fiz um estudo sobre essas operações básicas para um sistema que estou evoluindo, vejam só o que aprendi:

Instalando o banco de dados

A primeira coisa a ser feita aqui é baixar MongoDB e colocá-lo para rodar. Basta seguir o tutorial que existe no próprio site do MongoDB. Após a instalação, coloque-o para rodar, dê um “start” no banco de dados – dentro do link do tutorial há também a explicação de como fazer isso. Olha só que legal, na sua máquina está rodando um banco de dados NOSQL!

Crie seu projeto

Agora crie um novo projeto do tipo Console Application, nesse caso, com a linguagem C#.

Namespaces

Antes de qualquer coisa, leia este link e obtenha o driver do MongoDB para C#. Inclua os seguintes namespaces em sua classe:

  • MongoDB.Bson –> MongoDB usa o formato BSON para armazenamento e transferência de dados. Utilizaremos esse namespace para fazer a utilização de seus objetos;
  • MongoDB.Driver –> Através desse namespace que acessaremos o MongoDB;
  • MongoDB.Driver.Builders –> Aqui estarão as classes e métodos “helpers” para construir vários objetos.

Criando as variáveis para utilização no nosso programa

Aqui estão as variáveis para fazermos conexão com o nosso banco de dados:

var connectionString = "mongodb://localhost";
var client = new MongoClient(connectionString);
var server = client.GetServer();
var database = server.GetDatabase("teste"); // "test2" é o nome da sua base de dados, caso vc não tenha criado nenhuma base de dados, o próprio driver se encarregará disso

Além dessas variáveis também iremos criar a classe Entidade, conforme abaixo:

public class Entidade
{
public ObjectId Id { get; set; }
public string Nome { get; set; }
}

Criando uma coleção e inserindo um novo objeto

Uma coisa muito legal no MongoDB é que não é necessário criar as coleções (podemos chamar de tabelas também), abaixo nós estamos:

  • Criando a coleção “entidades” e tipando-a com nossa classe “Entidade”;
  • Criamos um novo objeto do tipo “Entidade”;
  • Inserimos o objeto na coleção;
  • Setamos o Id com o Id gerado pelo Mongo DB.

var collection = database.GetCollection<Entidade>("entidades"); // podemos pensar nessa como uma tabela
var entity = new Entidade() { Nome = "Fulano de tal" };
collection.Insert(entity);
var id = entity.Id; // Insere e seta o ID, sempre devemos colocar um ObjectId em nossos objetos que serão inseridos no MongoDB, podemos setar o ID também, mas o mesmo é gerado automaticamente

Encontrando os objetos gravados no banco

Aqui é possível encontrar um objeto através de sua chave (gerada pelo MongoDB). Setamos a coleção, criamos um objeto de busca e seu critério e setamos o retorno em um objeto ou coleção:

var collection = database.GetCollection<Entidade>("entidades");
var query = Query<Entidade>.EQ(e => e.Id, id);
var entity = collection.FindOne(query);

Atualizando objetos

Para atualizar um objeto no banco é tão fácil quanto no SQL:

  1. Setamos a coleção;
  2. Criamos um objeto de busca, nesse caso pelo id;
  3. Criamos um objeto de update bem como a atualização dos dados;
  4. Fazemos a atualização da coleção.

var collection = database.GetCollection<Entidade>("entidades");
var query = Query<Entidade>.EQ(e => e.Id, id);
var update = Update<Entidade>.Set(e => e.Nome, "Fulano atualizado"); // update modifiers
collection.Update(query, update);

Excluindo objetos

A dinâmica é a mesma: setamos a coleção, montamos a busca com o critério do ID e removemos o objeto da coleção:

var collection = database.GetCollection<Entidade>("entidades");
query = Query<Entidade>.EQ(e => e.Id, id);
collection.Remove(query);

Conclusão

A ideia aqui foi mostrar CRUD no MongoDB com C# de uma forma prática e simples. Espero que tenha ficado claro e que todos consigam fazer. Qualquer dúvida é só falar.

Espero que isso ajude no crescimento da comunidade. Um forte abraço e até a próxima!

Referências