Artículo reescrito y adaptado del blog oficial de .NET (fuente original).
Integración avanzada de MongoDB y EF Core para .NET
Desde su disponibilidad general en mayo de 2024, el proveedor de MongoDB para Entity Framework Core ha permitido a los desarrolladores .NET trabajar con MongoDB usando las capacidades familiares de EF Core, como consultas LINQ, seguimiento de cambios y concurrencia optimista. Esto ha facilitado la adopción de MongoDB en proyectos .NET gracias a una integración fluida y escalable.
Con el paso de los meses, el proveedor ha evolucionado incorporando nuevas funciones específicas de MongoDB, mejoras de rendimiento y compatibilidad con las versiones más recientes de EF Core. Ahora, dos características clave amplían aún más sus posibilidades: Cifrado Consultable y Búsqueda Vectorial.
Cifrado Consultable en MongoDB: Seguridad sin sacrificar consultas
El Cifrado Consultable (Queryable Encryption) permite cifrar datos sensibles en tu base de datos manteniendo la capacidad de realizar consultas sobre esos datos. Así, las organizaciones pueden cumplir con normativas estrictas de privacidad (como en los sectores de salud o financiero) sin perder funcionalidad en sus aplicaciones.
Con esta función, los datos permanecen protegidos tanto en reposo como en tránsito, y no es necesario rediseñar la aplicación para consultar campos cifrados.
Ejemplo de configuración en EF Core
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Empleado>(entity =>
{
entity.Property(e => e.IdentificadorFiscal)
.IsEncryptedForEquality(<TuClaveCifrado>);
entity.Property(e => e.Salario)
.HasBsonRepresentation(BsonType.Decimal128)
.IsEncryptedForRange(0m, 10000000m, 0, <TuClaveCifrado>);
});
}
Consultas sobre campos cifrados
// Consulta por igualdad sobre campo cifrado
var empleado = db.Empleados.Where(e => e.IdentificadorFiscal == "45678");
// Consulta por rango sobre campo cifrado
var altosDirectivos = db.Empleados.Where(e => e.Salario >= 100000m && e.Salario < 200000m);
Consulta el tutorial completo de cifrado consultable para más detalles.
Búsqueda Vectorial: Potencia la inteligencia con IA y MongoDB
La Búsqueda Vectorial transforma la manera de buscar y analizar datos no estructurados, permitiendo búsquedas por similitud semántica en lugar de palabras clave exactas. Utiliza embeddings vectoriales para representar textos, imágenes o sonidos como vectores numéricos, facilitando aplicaciones como motores de recomendación, búsqueda semántica y detección de anomalías.
Esto se traduce en resultados de búsqueda más relevantes y la posibilidad de crear soluciones de IA directamente sobre tu base de datos MongoDB.
Cómo definir campos vectoriales en tu modelo
// Dentro de OnModelCreating
b.Property(e => e.VectorTrama)
.HasElementName("vector_trama_voyage_3_large")
.HasBinaryVectorDataType(BinaryVectorDataType.Float32);
// O directamente en la clase de modelo
[BinaryVector(BinaryVectorDataType.Float32)]
public float[]? VectorTrama { get; set; }
Ejemplo de consulta vectorial en LINQ
var similares = await db.Peliculas.VectorSearch(
e => e.VectorTrama,
miVectorReferencia,
limit: 10)
.ToListAsync();
Descubre más opciones avanzadas (prefiltros, puntuaciones, etc.) en el tutorial de búsqueda vectorial.
Primeros pasos con el proveedor MongoDB EF Core
Puedes comenzar creando una aplicación .NET sencilla que se conecte a MongoDB Atlas, la base de datos en la nube gestionada de MongoDB. El quickstart oficial te guía paso a paso.
Recursos y documentación recomendada
- Documentación de EF Core
- Documentación de MongoDB
- Guía rápida del proveedor MongoDB EF Core
- Cifrado Consultable en MongoDB
- Búsqueda Vectorial en MongoDB Atlas
¿Quieres certificarte en búsqueda vectorial? Explora el curso oficial y obtén tu badge.




