MongoDB.Driver para C# (.NET): guía completa
1. ¿Qué es y para qué sirve?
MongoDB.Driver es el controlador oficial, de alto rendimiento y asíncrono para que las aplicaciones en la plataforma .NET (C#, F#, VB.NET) se comuniquen con la base de datos MongoDB. Proporciona un conjunto completo de herramientas para realizar todas las operaciones CRUD (Crear, Leer, Actualizar, Eliminar), gestionar índices, agregar datos, trabajar con transacciones y procesar cambios en tiempo real (Change Streams). Este controlador es desarrollado y mantenido por MongoDB Inc., lo que garantiza su total compatibilidad con las últimas versiones de MongoDB y la implementación de todas las funcionalidades modernas del sistema gestor de bases de datos.
¿Para qué sirve esta librería? Si estás desarrollando una aplicación .NET (un servicio web con ASP.NET Core, una aplicación de escritorio con WPF, una utilidad de consola o un microservicio) y deseas usar MongoDB como almacenamiento principal o secundario, necesitas un controlador para establecer la conexión e intercambiar datos. MongoDB.Driver abstrae la complejidad del protocolo de red de MongoDB (Wire Protocol), ofreciendo al desarrollador una API cómoda y fuertemente tipada. Trabajas con objetos de C# y el controlador los serializa automáticamente a BSON (formato binario de MongoDB) y viceversa. Esto permite escribir código conciso, seguro y eficiente sin tener que profundizar en los detalles de la comunicación de bajo nivel.
La librería admite dos paradigmas de trabajo principales: síncrono y asíncrono (recomendado). Los métodos asíncronos (con el sufijo Async) permiten no bloquear los hilos de ejecución, algo fundamental para aplicaciones de servidor escalables. El controlador también incluye un proveedor LINQ que traduce las consultas LINQ a la sintaxis de MongoDB Aggregation Pipeline, haciendo que el código sea aún más declarativo y familiar para los desarrolladores .NET.
2. Instalación
La instalación se realiza a través del administrador de paquetes NuGet. Ejecuta uno de los siguientes comandos en la consola del administrador de paquetes (Package Manager Console) o en la terminal de .NET CLI.
A través de .NET CLI (recomendado):
dotnet add package MongoDB.Driver
A través de Package Manager Console (Visual Studio):
Install-Package MongoDB.Driver
Para proyectos que usan Entity Framework Core (opcional):
Existe un proveedor independiente llamado MongoDB.EntityFrameworkCore, pero para la mayoría de las tareas el controlador principal es suficiente.
Después de la instalación, se agregará una referencia al archivo del proyecto (.csproj):
<PackageReference Include="MongoDB.Driver" Version="2.25.0" />
3. Inicio rápido — ejemplo mínimo funcional
El siguiente código se conecta a una instancia local de MongoDB, obtiene la base de datos "testdb", la colección "users", inserta un documento y muestra su ID en la consola.
using MongoDB.Bson;
using MongoDB.Driver;
// 1. Creamos el cliente (conexión al servidor)
var client = new MongoClient("mongodb://localhost:27017");
// 2. Obtenemos la base de datos (se crea automáticamente si no existe)
var database = client.GetDatabase("testdb");
// 3. Obtenemos la colección (se crea automáticamente en la primera inserción)
var collection = database.GetCollection<BsonDocument>("users");
// 4. Creamos un documento
var document = new BsonDocument
{
{ "name", "Alice" },
{ "age", 30 },
{ "city", "New York" }
};
// 5. Insertamos el documento (de forma asíncrona)
await collection.InsertOneAsync(document);
// 6. Mostramos el ID generado
Console.WriteLine($"Documento insertado con ID: {document["_id"]}");
// 7. Leemos todos los documentos de la colección
var allUsers = await collection.Find(new BsonDocument()).ToListAsync();
foreach (var user in allUsers)
{
Console.WriteLine(user.ToJson());
}
4. Métodos/funciones/clases principales
4.1 Mon
También en la biblioteca
Bull para JavaScript (Node.js): guía completa con ejemplos
Geolocalización y mapas en PHP: bibliotecas, API y ejemplos de código
Trabajo con Kafka en Kotlin: bibliotecas y ejemplos
Trabajo con YAML en Java: bibliotecas SnakeYAML y Jackson