Docs 菜单
Docs 主页
/ / /
C#/ .NET驱动程序
/

版本说明

了解以下版本中的新功能:

  • 版本 3.5

  • 版本 3.4

  • 版本 3.3

  • 版本 3.2

  • 版本 3.1

  • 版本 3.0

  • 版本 2.30

  • 版本 2.29

  • 版本 2.28

  • 版本 2.27

  • 版本 2.26

  • 版本 2.25

警告

v 3.5 中的重大更改

MongoDB .NET/ C#驱动程序3.5 包含重大更改。有关更多信息,请参阅 版本 3.5 重大更改

3.5驾驶员发布包括以下新功能、改进和修复:

  • 添加对Queryable Encryption前缀、后缀和子字符串查询的实验性支持。这些功能并不稳定,在普遍可用 (GA) 之前无法保证其安全性。仅在实验性工作负载中使用它们。要学习;了解有关 QE 的更多信息,请参阅正在使用的加密。

  • CsfleSchemaBuilder 类添加到 MongoDB.Driver.Encryption包中。您可以使用此类为客户端字段级加密(CSFLE) 创建JSON schema,如以下示例所示:

    var builder = CsfleSchemaBuilder.Create(schemaBuilder =>
    {
    schemaBuilder.Encrypt<Patient>(_collectionNamespace, builder =>
    {
    builder
    .EncryptMetadata(keyId: _keyId)
    .Property(p => p.MedicalRecords, BsonType.Array,
    EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Random)
    .Property("bloodType", BsonType.String,
    algorithm: EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Random)
    .Property(p => p.Ssn, BsonType.Int32,
    EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic)
    .Property(p => p.Insurance, innerBuilder =>
    {
    innerBuilder
    .Property(i => i.PolicyNumber, BsonType.Int32,
    EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic);
    })
    .PatternProperty("_PIIString$", BsonType.String, EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic)
    .PatternProperty("_PIIArray$", BsonType.Array, EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Random)
    .PatternProperty(p => p.Insurance, innerBuilder =>
    {
    innerBuilder
    .PatternProperty("_PIIString$", BsonType.String,
    EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic)
    .PatternProperty("_PIINumber$", BsonType.Int32,
    algorithm: EncryptionAlgorithm.AEAD_AES_256_CBC_HMAC_SHA_512_Deterministic);
    });
    });
    });
    var schema = builder.Build();

    要学习;了解有关 CSFLE 的更多信息,请参阅正在使用的加密。

  • 添加以下 LINQ 方法:

    • Median():计算值序列的中位数。

    • Percentile():计算一系列值的多个百分位数。

    您可以使用这些方法来执行计算,作为 $group$setWindowFields聚合阶段的一部分。

  • SortDefinitionBuilder 类添加新的 Ascending()Descending() 方法重载。使用 $sort更新操作符时,可以使用这些方法按值对元素进行排序。

  • 新增对使用 SOCKS5 代理连接到MongoDB 的支持。您可以在连接字符串中或使用MongoClientSettings.Socks5ProxySettings属性指定 SOCKS5 连接设置。

  • 在游标和 LINQ 中添加对 IAsyncEnumerable<T> 接口的支持。您可以使用 await foreach 语法来异步遍历查询结果。

  • BinaryVectorReaderBinaryVectorWriter 类添加大端支持。

  • 更改内部子系统,为即将发布中支持客户端操作超时 (CSOT) 做准备。我们希望这些更改能够向后兼容,并且不会影响现有的驾驶员行为。如果您遇到以下任何问题,请联系MongoDB :

    • 操作意外超时或未按预期超时

    • 数据库调用出现异常延迟或挂起

    • 取消命令时的行为差异

    有关寻求支持的最佳方法,请参阅问题和帮助页面。请尽可能提供驾驶员日志和副本。

有关此发布的更多信息,请参阅Github上的 v3.5 发布说明。

3.4驾驶员发布包括以下新功能、改进和修复:

  • 添加 Mql.Convert() LINQ 方法,以便在执行聚合时在类型之间进行转换。要学习;了解详情,请参阅 LINQ指南的 $convert 部分。

  • 添加对 KeyValuePair.Create() LINQ 方法的支持。

  • 添加 GeoNear()聚合构建器方法以构造 $geoNear聚合阶段。要查看示例,请参阅MongoDB Server手册中的 $geoNear 参考。

  • 支持在 LINQ 查询中从接口转换为实现该接口的类型。

  • 支持 LINQ 中的 Dictionary(IEnumerable<KeyValuePair<TKey, TValue>> collection) 构造函数。

  • 为Atlas Search查询添加以下选项:

    • MatchCriteria SearchTextOptionsText()为传递给 操作符符方法的术语设立匹配条件。

    • SynonymsSearchPhraseOptions 中设立使用 Phrase()操作符方法时同义词映射定义的名称。

    要学习;了解有关执行Atlas Search查询的更多信息,请参阅Atlas Search指南。

  • 支持将 IQueryable<Derived> 对象转换为 IQueryable<Base> 后的 LINQ 查询。

  • 更正Atlas Search操作符符行为,使用配置的序列化器而不是预定义的序列化器。要使用以前的行为,设立以下选项:

    SearchDefinition.UseConfiguredSerializers(false);

有关此发布的更多信息,请参阅Github上的 v3.4 发布说明。

3.3驱动程序版本包括以下新功能:

  • 添加新的 NamespaceType字段,指示为 ChangeStreamDocument 类中的 create 事件创建的对象的类型。要学习;了解有关变更流的更多信息,请参阅《监控数据更改》指南。

  • 添加以下“正在使用的加密”功能:

    • 支持 $lookup聚合阶段

    • 用于配置数据加密密钥缓存生命周期的 ClientEncryptionOptions属性

    要学习;了解有关“正在使用的加密”的更多信息,请参阅“正在使用的加密”指南。

  • 添加以下 LINQ 功能:

    • 支持 SkipWhile()TakeWhile() LINQ聚合方法。要学习;了解更多信息,请参阅 LINQ指南的“跳过条件”“限制条件”部分。

    • 支持 LINQ 查询中的 $sigmoid表达式。

    • 支持使用 LINQ 语法访问权限任何序列化为字符串的字典键,无论其根本的数据类型如何。

  • 新增对 $rankFusion聚合阶段的支持,该阶段可对多个管道的合并结果进行基于排名的结果评分。

  • 通过提供仅采用过滤参数的 方法的重载,添加对直接针对值的 $elemMatch 查询的支持。ElemMatch()要学习;了解更多信息,请参阅更新一个文档中的数组更新多个文档中的数组

  • 新增对使用 OfType<T>() 方法和 is操作符检查标量鉴别器类型的支持。

有关此发布的更多信息,请参阅Github上的 v3.3 发布说明。

3.2驱动程序版本包括以下新功能:

  • 添加了新的 ObjectSerializerAllowedTypesConvention 约定,允许指定对象序列化器可以对哪些类型进行序列化和反序列化。要学习;了解有关约定的更多信息,请参阅 约定指南。

  • EnumRepresentationConvention 类添加一个新的构造函数,该构造函数允许您使用 topLevelOnly 参数来指定该约定是仅适用于枚举属性还是适用于包含枚举集合的所有属性。

    您可以使用 new 构造函数实例化 EnumRepresentationConvention 类,如以下示例所示:

    EnumRepresentationConvention(BsonType representation, bool topLevelOnly);
  • 优化客户端投影,仅从服务器检索必填字段,而不是检索所有字段然后进行过滤。

  • 添加以下类以支持Atlas Vector Search中的二进制向量表示:

    • BinaryVectorFloat32

    • BinaryVectorInt8

    • BinaryVectorPackedBit

    要学习;了解有关使用.NET/ C#驱动程序的Atlas Vector Search 的更多信息,请参阅运行Atlas Vector Search查询指南。

  • DocumentFormat属性添加到 DateOnlySerializer。此属性允许您自定义驾驶员序列化 DateOnly 值的方式。此发布还添加了 [BsonDateOnlyOptions()] 属性,以便在属性级别自定义 DateOnly 值的序列化行为。要学习;了解更多信息,请参阅 POCO指南的自定义仅日期序列化 部分。

有关此发布的更多信息,请参阅Github上的 v3.2 发布说明。

3.1驱动程序版本包括以下新功能:

  • System.Collections.Immutable命名空间中的不可变集合添加新的默认序列化器。驾驶员现在可以序列化 ImmutableArray 对象,并且其他不可变集合的序列化内存效率更高。

  • 添加 SearchIndexType 类型以支持以编程方式创建Atlas Vector Search索引。要学习;了解更多信息,请参阅Atlas Search和 Vector Search 索引指南。

  • 使用 equals操作符符的Atlas Search构建者添加对令牌字段类型和大量字段表达式的支持。 要学习;了解有关将Atlas Search与.NET/ C#驱动程序结合使用的更多信息,请参阅Atlas Search。

  • 新增对以下Atlas Search查询的支持:

    • nullGuid 值使用 Equals()操作符方法

    • Guid 值使用 In()操作符方法

    要学习;了解有关这些方法的更多信息,请参阅Atlas Search Search指南的Atlas Search Search 操作符和收集器部分。

  • 在Atlas Search中添加对顺序分页的支持。

  • 新增对少于 3 部分的有效 SRV 主机名的支持。

  • 在MongoDB查询API筛选器中添加对 ExistsIsMissingIsNullOrMissing 方法的支持。

  • 添加对精确最近邻 (ENN)向量搜索的支持。 要学习;了解有关新奥向量搜索的更多信息,请参阅Atlas Search文档中的运行向量搜索查询。

  • 为更新和替换操作添加排序选项。此更改允许您在尝试更新或替换单个文档时,如果有多个文档与过滤匹配,则可以设立排序顺序。要学习;了解更多信息,请参阅更新一个更新多个指南。

有关此发布的更多信息,请参阅v3.1发布说明。

警告

v 3.0 中的重大更改

v 3.0驾驶员包含重大更改。有关更多信息,请参阅版本3.0 重大更改。

3.0驱动程序版本包括以下新功能:

  • 添加 MongoClientSettings.TranslationOptions 连接选项,该选项指定用于将 LINQ 查询转换为 Query API 的选项。有关详细信息,请参阅指定连接选项。

  • 添加对 Half 类型的支持,该类型表示半精度浮点数。此类型在.NET 5 及更高版本中可用。要学习;了解有关 Half 类型的更多信息,请参阅 MSDN 上的半结构体API 参考页面。

  • IMongoClient 接口继承 IDisposable 接口。因此,MongoClient 类和实现IMongoClient 接口的其他类包含要传递给更新 Commands.ose() 的 Disp- Adds support for the ``sort 选项。方法,该方法会处理客户端端 .此方法不会释放根本的集群以及与MongoDB 服务器 的连接。要销毁集群和连接,请调用 ClusterRegistry.UnregisterAndDisposeCluster() 方法。IDisposable 接口的实施是实验性的。

    要学习;了解有关IDisposable 接口和使用Dispose() 方法的详情,请参阅 MSDN 上的“处置模式”。

  • 新增对 DateOnly 类型的支持,该类型表示不带时间组件的日期值。此类型在.NET 6 及更高版本中可用。要学习;了解有关 DateOnly 类型的更多信息,请参阅 DateOnly 结构体。 MSDN 上的API参考页面。

  • 新增对 TimeOnly 类型的支持,该类型表示不带日期组件的时间值。此类型在.NET 6 及更高版本中可用。要学习;了解有关 TimeOnly 类型的更多信息,请参阅 TimeOnly 结构体。 MSDN 上的API参考页面。

  • 添加在将 Find() 方法、Select() 方法或 Project()聚合阶段与 LINQ 3提供商一起使用时对隐式客户端投影的支持。在以前版本的驾驶员中,只有在调用 ToEnumerable()AsEnumerable() 方法后,才能使用 LINQ 3提供商执行客户端投影。

    要学习;了解如何为驾驶员方法启用和使用客户端投影,请选择相应的标签页:

    // Enable client-side projection
    var findOptions = new FindOptions();
    findOptions.TranslationOptions = new ExpressionTranslationOptions
    {
    EnableClientSideProjections = true
    };
    var find = collection
    .Find(doc => doc.Id == 1, findOptions);
    .Project(doc => new { R = MyFunction(doc.Name) });
    // Enable client-side projection
    var aggregateOptions = new AggregateOptions();
    aggregateOptions.TranslationOptions = new ExpressionTranslationOptions
    {
    EnableClientSideProjections = true
    };
    var queryable = collection
    .AsQueryable(aggregateOptions)
    .Where(doc => doc.Id == 1)
    .Select(doc => new { R = MyFunction(doc.Name) });
    // Enable client-side projection
    var aggregateOptions = new AggregateOptions();
    aggregateOptions.TranslationOptions = new ExpressionTranslationOptions
    {
    EnableClientSideProjections = true
    };
    var aggregate = collection
    .Aggregate(aggregateOptions)
    .Project(doc => new { R = MyFunction(doc.Name) });

    提示

    MongoClientSettings

    要为客户端上的所有查询启用客户端客户端投影,请设立MongoClientSettings对象的 TranslationOptions属性,如以下示例所示:

    clientSettings.TranslationOptions = new ExpressionTranslationOptions
    {
    EnableClientSideProjections = true
    };

    要学习;了解有关聚合管道与.NET/ C#驱动程序结合使用的更多信息,请参阅聚合操作。

  • 为批量写入操作添加 MongoClient API 。要学习;了解有关批量写入操作的更多信息,请参阅批量写入操作。

有关此发布的更多信息,请参阅v3.0发布说明。

2.30驾驶员不会引入新功能或错误修复。其目的是通过将 v 3.0 中删除的公共 API 标记为已过时,以便轻松迁移到.NET/ C#驱动程序v 3 .x。

2.29驾驶员发布增加了对MongoDB Server 8.0版本的支持,并包含以下新功能:

  • 新增支持v 2的Queryable Encryption范围协议的支持。

  • 添加对Queryable Encryption范围索引的支持。 有关Queryable Encryption的更多信息,请参阅MongoDB Server手册中的Queryable Encryption

有关此发布的更多信息,请参阅v2.29发布说明。

警告

v 2.28中潜在的重大更改

  • 所有.NET/ C#驱动程序组件都有强命名。 如果应用程序具有引用多个.NET/ C#驱动程序版本的依赖项,则必须创建绑定重定向来管理这些依赖项。 有关更多信息,请参阅版本 2.28.0重大更改。

2.28驱动程序版本包括以下新功能:

  • 添加了对涉及Nullable<T>的其他数字转换的支持。

  • 添加了在使用 KMIP 进行CSFLE 或Queryable Encryption时对delegated选项的支持。

有关此发布的更多信息,请参阅v2.28发布说明。

2.27驱动程序版本包括以下新功能:

  • 新增支持$sample聚合操作符的支持。

  • 为 LINQ 3中的序列化器实现Equals()方法。

  • 确保读关注和写入关注不会应用于Atlas Search索引助手命令,以避免错误。

  • 使用 MONGODB-OIDC身份验证机制时,禁止在 authMechanismProperties 连接string值中使用逗号字符。

  • 修复了一个转换错误,该错误在涉及不同大小的数字的序列化过程中导致错误。

  • 新增对使用libdl.so.2库的Linux发行版的支持。

有关此发布的更多信息,请参阅v2.27发布说明。

2.26驱动程序版本包括以下新功能:

  • 添加了对在Select()Project()聚合阶段使用SelectMany()聚合方法的支持。

  • 在 LINQ 查询中添加了对Dictionary.ContainsValue()调用的支持。

  • 添加了对混合类型string连接的支持。

  • 支持在libmongocrypt绑定中使用原生crypto

  • 添加了对 MemoryReadOnlyMemory 结构序列化的支持。要学习;了解有关实现这些类型的更多信息,请参阅序列化指南的“提高数组序列化性能”部分。

  • 添加了使用MONGODB-OIDC身份验证机制时对GCP身份提供商的支持。 要学习;了解更多信息,请参阅 企业身份验证机制指南中的GCP IMDS

  • 实现了 NuGet 包的签名。

  • 尽可能对其他mongos实例实施读取和写入重试。

2.25驱动程序版本包括以下新功能:

  • 添加了对MONGODB-OIDC身份验证机制和 Azure 身份提供者自动获取令牌的支持。

  • BsonClassMapSerializer找不到匹配的创建者时报告的错误消息中添加了类名称。

  • 添加了LoggedStages字段以显示执行 LINQ查询后执行的MQL 。

  • 添加了对通过使用 srvServiceName 连接选项以自定义服务名称覆盖 "mongodb" 服务名称的支持。要学习;了解更多信息,请参阅指定连接选项指南。

  • 改进批量写入操作的行为,以防止多次枚举请求参数。

后退

快速参考

在此页面上