En este módulo, aprenderás cómo integrar MongoDB con C#, un lenguaje de programación popular para el desarrollo de aplicaciones empresariales. Exploraremos cómo conectarse a una base de datos MongoDB, realizar operaciones CRUD (Crear, Leer, Actualizar, Eliminar) y utilizar características avanzadas de MongoDB desde una aplicación C#.
Contenido
Configuración del Entorno
Antes de comenzar, asegúrate de tener instalado lo siguiente:
- Visual Studio (o cualquier otro IDE compatible con C#)
- .NET SDK
- MongoDB (puedes usar MongoDB Atlas para una base de datos en la nube o instalar MongoDB localmente)
Instalación del Driver de MongoDB para C#
Para interactuar con MongoDB desde C#, necesitas instalar el driver oficial de MongoDB para C#. Puedes hacerlo utilizando NuGet Package Manager en Visual Studio.
- Abre tu proyecto en Visual Studio.
- Ve a Tools > NuGet Package Manager > Manage NuGet Packages for Solution.
- Busca
MongoDB.Driver
y haz clic en Install.
Conexión a MongoDB
Para conectarte a MongoDB, necesitas una cadena de conexión. Si estás usando MongoDB Atlas, puedes obtener la cadena de conexión desde el panel de control de Atlas.
Ejemplo de Conexión
using MongoDB.Bson; using MongoDB.Driver; using System; namespace MongoDBExample { class Program { static void Main(string[] args) { // Cadena de conexión a MongoDB var connectionString = "mongodb+srv://<username>:<password>@cluster0.mongodb.net/test?retryWrites=true&w=majority"; var client = new MongoClient(connectionString); // Acceder a la base de datos var database = client.GetDatabase("testdb"); Console.WriteLine("Conexión exitosa a MongoDB"); } } }
Operaciones CRUD
Crear Documentos
Para insertar documentos en una colección, primero necesitas definir una clase que represente el documento.
public class Person { public ObjectId Id { get; set; } public string Name { get; set; } public int Age { get; set; } }
Luego, puedes insertar un documento en la colección.
var collection = database.GetCollection<Person>("people"); var person = new Person { Name = "John Doe", Age = 30 }; collection.InsertOne(person); Console.WriteLine("Documento insertado");
Leer Documentos
Para leer documentos de una colección, puedes usar el método Find
.
var people = collection.Find(new BsonDocument()).ToList(); foreach (var person in people) { Console.WriteLine($"Nombre: {person.Name}, Edad: {person.Age}"); }
Actualizar Documentos
Para actualizar documentos, puedes usar el método UpdateOne
.
var filter = Builders<Person>.Filter.Eq("Name", "John Doe"); var update = Builders<Person>.Update.Set("Age", 31); collection.UpdateOne(filter, update); Console.WriteLine("Documento actualizado");
Eliminar Documentos
Para eliminar documentos, puedes usar el método DeleteOne
.
var filter = Builders<Person>.Filter.Eq("Name", "John Doe"); collection.DeleteOne(filter); Console.WriteLine("Documento eliminado");
Consultas Avanzadas
Puedes realizar consultas más complejas utilizando filtros y proyecciones.
Ejemplo de Consulta Avanzada
var filter = Builders<Person>.Filter.Gt("Age", 25); var projection = Builders<Person>.Projection.Include("Name").Exclude("Id"); var results = collection.Find(filter).Project<Person>(projection).ToList(); foreach (var person in results) { Console.WriteLine($"Nombre: {person.Name}"); }
Ejercicio Práctico
Ejercicio
Crea una aplicación de consola en C# que realice las siguientes operaciones en una base de datos MongoDB:
- Inserta tres documentos en una colección llamada
products
. Cada documento debe tener los camposName
,Category
yPrice
. - Lee todos los documentos de la colección y muestra sus contenidos en la consola.
- Actualiza el precio de un producto específico.
- Elimina un producto basado en su nombre.
Solución
using MongoDB.Bson; using MongoDB.Driver; using System; using System.Collections.Generic; namespace MongoDBExample { public class Product { public ObjectId Id { get; set; } public string Name { get; set; } public string Category { get; set; } public double Price { get; set; } } class Program { static void Main(string[] args) { var connectionString = "mongodb+srv://<username>:<password>@cluster0.mongodb.net/test?retryWrites=true&w=majority"; var client = new MongoClient(connectionString); var database = client.GetDatabase("testdb"); var collection = database.GetCollection<Product>("products"); // Insertar documentos var products = new List<Product> { new Product { Name = "Laptop", Category = "Electronics", Price = 999.99 }, new Product { Name = "Smartphone", Category = "Electronics", Price = 499.99 }, new Product { Name = "Table", Category = "Furniture", Price = 199.99 } }; collection.InsertMany(products); Console.WriteLine("Documentos insertados"); // Leer documentos var allProducts = collection.Find(new BsonDocument()).ToList(); Console.WriteLine("Documentos en la colección:"); foreach (var product in allProducts) { Console.WriteLine($"Nombre: {product.Name}, Categoría: {product.Category}, Precio: {product.Price}"); } // Actualizar documento var filter = Builders<Product>.Filter.Eq("Name", "Laptop"); var update = Builders<Product>.Update.Set("Price", 899.99); collection.UpdateOne(filter, update); Console.WriteLine("Documento actualizado"); // Eliminar documento var deleteFilter = Builders<Product>.Filter.Eq("Name", "Table"); collection.DeleteOne(deleteFilter); Console.WriteLine("Documento eliminado"); } } }
Conclusión
En este módulo, aprendiste cómo integrar MongoDB con C# y realizar operaciones CRUD básicas. También exploraste cómo realizar consultas avanzadas y completaste un ejercicio práctico para reforzar los conceptos aprendidos. Con esta base, estás preparado para construir aplicaciones más complejas utilizando MongoDB y C#. En el siguiente módulo, exploraremos aplicaciones del mundo real utilizando MongoDB.
Curso de MongoDB
Módulo 1: Introducción a MongoDB
Módulo 2: Operaciones CRUD en MongoDB
Módulo 3: Modelado de Datos en MongoDB
Módulo 4: Indexación y Agregación
Módulo 5: Características Avanzadas de MongoDB
Módulo 6: Rendimiento y Seguridad
- Optimización del Rendimiento
- Respaldo y Restauración
- Mejores Prácticas de Seguridad
- Monitoreo y Alertas