MongoDB – CRUD com C#

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, que é 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 coloca-lo para rodar, basta seguir esse tutorial que existe no próprio site do MongoDB http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/.
Após instalar o MongoDB coloque-o para rodar, dê um “start” no banco de dados, dentro do mesma URL informada agora a pouco 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 :O !!!

Crie seu projeto

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

Namespaces

Antes de qualquer coisa, leia essa URL http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-csharp-driver/, 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:

  1. Criando a coleção “entidades” e tipando-a com nossa classe “Entidade”
  2. Criamos um novo objeto do tipo “Entidade”
  3. Inserimos o objeto na coleção
  4. Setamos o Id com o Id gerado pelo Mongo DB
</pre>
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
<pre>

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)

  1. Setamos a coleção
  2. Criamos um objeto de busca e seu critério
  3. 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

  1. Setamos a coleção
  2. Montamos a busca com o critério do ID
  3. 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

http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-csharp-driver/
http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/
http://docs.mongodb.org/ecosystem/tutorial/use-csharp-driver/

Anúncios

Trabalhando com datas no Informix

Algumas coisas básicas que todo mundo precisa ver mais cedo ou mais tarde.

Convertendo texto para data TO_DATE

select TO_DATE(’18/01/2012 17:50′, ‘%d/%m/%Y %H:%M’) from dual

TO_DATE – converte para data
18 dia – %d
01 mês – %m
2012 ano – %Y
17 hora – %H
50 minuto – %M

SYSDATE ou GETDATE() no Informix

Current = pega data e hora daquele momento
select current from dual

Today = pega a data daquele dia
select today from dual

Esepero que ajude.

Até mais.

Exportação de dados do SQL Server para o Oracle com assistente de importação do SQL Server

Importação de dados do SQL para o Oracle com assistente de importação do SQL Server

Esses dias precisei exportar várias tabelas que tinha em minha base de dados SQL Server para uma base de dados no Oracle, uma opção interessante para fazer isso é utilizando o assistente de importação do SQL Server. Foi bem fácil e rápido fazer isso, a única coisa que não gostei é que na versão Express do SQL não é possível salvar os dados da importação e se for necessário fazer novamente, é preciso montar tudo do começo.
Vamos ao passo-a-passo:

A primeira coisa a ser feita aqui é iniciar assistente de importação SQL Server, que geralmente fica em Iniciar -> (Todos) Programas -> Microsoft SQL Server -> Importar e Exportar Dados.

Agora vamos definir a origem de nossos dados em nosso servidor SQL, precisamos ter apenas, nome do servidor/ip e porta, usuário e senha, após colocar esses dados basta escolher a base de dados que contém as tabelas que vamos exportar.

Vamos para a próxima fase que será definir o local de destino dos dados, nosso servidor Oracle. Para isso é necessário selecionar a opção “.Net Framework Data Provider for Oracle” e configurar os dados de conexão com nosso servidor que são data source (composto por [servidor]:[porta]/[serviço]), usuário e senha.

Agora vamos selecionar a primeira opção “Copiar dados de uma ou mais tabelas ou exibições”


Nesse passo vamos selecionar as tabelas e view’s do SQL Server que desejamos levar para nosso Oracle.


É muito importante “Editar Mapeamentos” das tabelas, pois há tipos de dados que o assistente de importação não consegue resolver, e por isso é necessário que nós decidamos qual é o melhor tipo para receber esse dado no Oracle.

No momento da edição de mapeamento marque a opção “Ignorar e recriar tabela de destino”

Por exemplo
De:

Para:

Após editar todos os mapeamentos vamos validar inconsistências nas tabelas que serão importadas e voltar para configurar se for necessário.

Agora vamos apenas para o próximo passo, apenas selecione “Executar imediatamente”.


Agora veja o que o assistente exibe e valide dados antes efetuar importação.


Agora basta concluir e acompanhar.

Acompanhamento

No erro volte e refaça a configuração.


Dica DateTime no SQL vira DATE no Oracle.


Espero que isso contribua para o crescimento da comunidade.

Um forte abraço.

Problemas com collatation – SQL Server – Cannot resolve collation conflict for equal to operation.

No SQL Server, um collation pode ser definido no nível da coluna, quando comparamos duas colunas com collations diferentes em uma query obtemos o erro “Cannot resolve collation conflict for equal to operation.”.


SELECT
	[campos]
FROM
	Tabela1
INNER JOIN
	Tabela2
WHERE
	Tabela1.Campo = Tabela1.Campo

Se as colunas Campo da Tabela1 e Tabela2 tiverem collation’s diferentes, isso gerará o erro de conflito de collation’s. Para solucionar esse conflito podemos utilizar o comando COLLATE DATABASE_DEFAULT após os campos que estão sendo comparados.

SELECT
	[campos]
FROM
	Tabela1
INNER JOIN
	Tabela2
WHERE
	Tabela1.Campo COLLATE DATABASE_DEFAULT = Tabela1.Campo COLLATE DATABASE_DEFAULT

O collation pode afetar os seguintes pontos de nossa query:

  1. Clausula Where
  2. Join
  3. Funções
  4. Bases de dados

Até a próxima.