NoSQL – MongoDB e C#

Com prometido, neste artigo estarei demonstrando como desenvolver uma integração básica com o Mongo DB (GET/SET) e C#, com os drivers que a própria Mongo DB desenvolve e dá suporte.

O código fonte completo do driver para .NET do Mongo DB pode ser baixado no site:
https://github.com/mongodb/mongo-csharp-driver/downloads

Se você não tem interesse no código fonte, também é possível baixar somente as DLLs (Setup).

A solution do driver é bem organizada (com testes unitários, setup e uma boa documentação), mas o que precisaremos são somente os binários do projeto Driver, assim basta dar um “build” em modo “release” e copiar as DLL para sua aplicação.

Após adicionadas e referenciadas as DLLs em um projeto .NET, no meu caso, uma aplicação WebService, vamos ao desenvolvimento:

O código abaixo demonstra a pesquisa de um único registro com o método Get e o parâmetro id, e com o método Set, a inserção e atualização de dados:

namespace MongoEndPoint
{
    using System.Web.Services;
    using System.Web.Script;
    using MongoDB.Bson;
    using MongoDB.Driver;

    [WebService]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    public class MongoEndPoint : WebService
    {
        [WebMethod]
        public string Get(int id)
        {
            string connectionString = "mongodb://localhost";

            var server = MongoServer.Create(connectionString);

            server.Connect();

            var db = server.GetDatabase("azul");

            var collection = db.GetCollection("coluna");

            var query = new QueryDocument("id", id);

            var obj = collection.FindOne(query);

            if (obj == null || !obj.Contains("nome")) return null;

            return obj["nome"].AsString;
        }

        [WebMethod]
        public void Set(int id, string nome)
        {
            string connectionString = "mongodb://localhost";

            var server = MongoServer.Create(connectionString);

            server.Connect();

            var db = server.GetDatabase("azul");

            var collection = db.GetCollection("coluna");

            var query = new QueryDocument("id", id);

            var obj = collection.FindOne(query);

            if (obj == null)
            {
                var doc = new BsonDocument();
                doc.Add("id", id);
                doc.Add("nome", nome);
                collection.Insert(doc);
            }
            else
            {
                var doc = new UpdateDocument();
                doc.Add("id", id);
                doc.Add("nome", nome);
                collection.Update(query, doc);
            }
        }
    }
}

Por fim, o método Get:

E o método Set:

Este foi meu último artigo que planejei tratar sobre NoSQL, escrito principalmente para aqueles que acompanham os artigos do blog saibam um pouco sobre o outro “lado da moeda”.

Se eu conhecer ou me apresentarem outro NoSQL que me chame a atenção, estarei escrevendo novemente sobre o assunto, mas por hora espero que tenham gostado destes cinco artigos.

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s