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.Drivery 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,CategoryyPrice. - 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
