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.

  1. Abre tu proyecto en Visual Studio.
  2. Ve a Tools > NuGet Package Manager > Manage NuGet Packages for Solution.
  3. Busca MongoDB.Driver y haz clic en Install.
Install-Package MongoDB.Driver

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:

  1. Inserta tres documentos en una colección llamada products. Cada documento debe tener los campos Name, Category y Price.
  2. Lee todos los documentos de la colección y muestra sus contenidos en la consola.
  3. Actualiza el precio de un producto específico.
  4. 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.

© Copyright 2024. Todos los derechos reservados