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.