MongoDB EF Core 提供程序中的可查询加密和向量搜索

张开发
2026/4/6 17:50:39 15 分钟阅读

分享文章

MongoDB EF Core 提供程序中的可查询加密和向量搜索
ngoDB Entity Framework (EF) Core 提供程序自 2024 年 5 月起正式发布。自发布以来我们欣喜地看到 .NET 开发人员社区给予了积极的反馈并且该提供程序在各种应用程序中得到了越来越广泛的采用。该提供商使开发人员能够利用 LINQ 查询、更改跟踪和乐观并发等 EF Core 功能将 MongoDB 无缝集成到他们的 .NET 项目中同时利用 MongoDB 的灵活性和可扩展性。我们持续增强提供程序的功能新增了诸多特性例如改进了对 MongoDB 特定操作的支持、优化了性能并扩展了与最新 EF 版本的兼容性。这些更新体现了我们致力于为开发者提供强大、直观且可靠的方式让他们能够使用 MongoDB 和 EF Core 构建现代应用程序的承诺。我们很高兴地宣布两项新增的重大功能——可查询加密和向量搜索这些功能让您可以直接通过便捷的 API 从 MongoDB EF Core 提供程序利用一些重要的 MongoDB 功能而无需依赖底层的 .NET C# 驱动程序。让我们先睹为快看看它们长什么样。MongoDB 可查询加密可查询加密是一项突破性功能它允许您加密 MongoDB 数据库中的敏感数据同时仍然能够查询这些数据。这意味着您可以在不牺牲查询能力的前提下维护强大的数据隐私和合规性。对于医疗保健和金融等数据治理要求严格的行业来说这一点尤其重要。对于用户而言这意味着更高的安全性、更低的数据泄露风险和更简化的合规工作因为他们可以自信地对静态数据和传输中的数据进行加密而无需重新设计应用程序架构来查询加密字段。配置数据模型以定义加密属性DbContext非常OnModelCreating简单如下所示protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.EntityEmployee(entity { entity.Property(e e.TaxPayerId) .IsEncryptedForEquality(Your Data Encryption Key GUID)); entity.Property(e e.Salary) .HasBsonRepresentation(BsonType.Decimal128) // Salaries from 0 to 10 million, no decimal place precision .IsEncryptedForRange(0m, 10000000m, 0, Your Data Encryption Key GUID)); }); }下面简要展示一下相等性查询和范围查询的工作原理//Encrypted Equality Query var specificEmployee db.Employees.Where(e e.TaxPayerId 45678); //Encrypted Range Query var seniorEmployees db.Employees.Where(e e.Salary 100000m e.Salary 200000m);完整的教程将向您展示如何使用 MongoDB EF Core 提供程序加密数据并进行查询。MongoDB 向量搜索向量搜索彻底革新了查找和分析非结构化数据的方式它支持基于语义而非精确关键词的相似性搜索。这项功能由向量嵌入技术驱动该技术将数据点例如文本、图像或音频表示为高维空间中的数值向量。向量搜索的重要性在于它能够为人工智能应用如推荐引擎、语义搜索和异常检测开启新的可能性。对于用户而言这意味着更智能、更相关的搜索结果能够直接在 MongoDB 数据上构建复杂的 AI 应用程序以及更深入地了解其非结构化信息。OnModelCreating以下代码块展示了如何轻松地在函数或数据模型类本身中设置带有向量嵌入字段的数据模型//Inside the OnModelCreating function b.Property(e e.PlotEmbedding) .HasElementName(plot_embedding_voyage_3_large) .HasBinaryVectorDataType(BinaryVectorDataType.Float32); // OR In the data model definition for the property [BinaryVector(BinaryVectorDataType.Float32)] public float[] ? PlotEmbedding {get; set;}完成上述配置并拥有运行向量搜索查询所需的适当向量索引后使用您的数据运行查询就非常简单如下所示//Simple LINQ Vector Search query var similarMovies await db.Movies.VectorSearch( e e.PlotEmbedding, myCustom.PlotEmbedding, limit: 10) .ToListAsync();

更多文章