jueves, febrero 11, 2010

Iniciando con MongoDB desde .Net

En el post anterior mostré como iniciar con mongoDB utilizando las herramientas que obtenemos al descargar la base de datos. Ahora quiero mostrar las mismas operaciones pero desde .Net (específicamente C#). Para esto es necesario descargar el driver para hablar con mongo desde .net

Para abrir la conexión a la base de datos debo crear una instancia de la clase MongoDB.Driver.Mongo, llamar el método Connect y después hacer un getDB con el nombre de la base de datos a la que quiero conectarme. Tomando el ejemplo anterior de la libreta de direcciones, el código queda así:

var mongo = new Mongo();
mongo.Connect();
var db = mongo.getDB("AddressBook");

una vez conectado a la base de datos obtengo una referencia a mi colección de documentos llamada “Contacts” (similar al concepto de tabla en una base de datos relacional).

var contacts = db.GetCollection("Contacts");

Ahora para insertar documentos creamos instancias de la clase MongoDB.Driver.Document (el cual es básicamente un diccionario de datos), le damos valores y lo insertamos a nuestra colección de contactos; como en el post anterior inserto 2 documentos a nuestra colección:

var mario = new Document();
mario["Name"] = "Mario";
mario["Phone"] = "1234567";
contacts.Insert(mario);

contacts.Insert(new Document()
.Append("Name", "Humberto")
.Append("Phone", "5555555")
);

Puede observarse dos formas de crear documentos. Una vez teniendo dos contactos (Mario y Humberto). Voy a actualizar al contacto con el nombre “Mario”. Aprovechando que estoy usando una base de datos no relacional, cambiaré las campos del documento, para ello utilizo el método Update de la colección contacts pasando como primer parámetro el nuevo documento y como segundo parámetro un documento que me sirve como selector

contacts.Update(
new Document()
.Append("FirstName", "Mario")
.Append("LastName", "Cornejo")
.Append("Phone", "1234567")
, new Document()
.Append("Name", "Mario")
);

Para hacer solo la actualización del campo teléfono del contacto con el nombre “Humberto” puedo hacer lo siguiente:

var humberto = contacts.FindOne(new Document().Append("Name", "Humberto"));
humberto["Phone"] = "4444444";
contacts.Update(humberto);
Aquí utilice el mismo método Update, pero solo le pase como parámetro el documento actualizado. Como se puede ver, la forma de realizar las operaciones desde C# es muy similar a como lo haríamos desde la consola usando la aplicación Mongo.exe

2 comentarios:

  1. Hola Mario,

    Soy Alfredo (Fred), de campusmvp.net. Me gustaría poder contactar contigo por email.

    Un saludo,

    Fred

    ResponderEliminar
  2. Hola Alfredo,

    puedes usar blog@developeando.com

    ResponderEliminar