了解以下版本中的新功能:
4.15 中的新增功能
PyMongo v 4.15版本包括以下新功能:
添加对Queryable Encryption前缀、后缀和子字符串查询的实验性支持。这些功能需要
pymongocrypt1.16 或更高版本。要学习;了解有关 QE 的更多信息,请参阅 正在使用的加密。注意
实验功能
Queryable Encryption的前缀、后缀和子字符串查询不稳定,在普遍可用 (GA) 之前无法保证其安全性。仅在实验性工作负载中使用它们。
添加对使用
bson.codec_options.TypeRegistry类将BSONDecimal128值编码和解码为Pythondecimal.Decimal值的支持。以下示例展示了如何使用bson.decimal128.DecimalEncoder类将Decimal128值编码为decimal.Decimal值:opts = CodecOptions(type_registry=TypeRegistry([DecimalEncoder()])) bson.encode({"d": decimal.Decimal('1.0')}, codec_options=opts) 新增对Windows ARM64 轮子的支持。
4.14 中的新增功能
PyMongo v 4.14版本包括以下新功能:
初步添加了对Python 3.14 的支持,包括自由线程功能。该驾驶员尚不支持Python 3.14 的以下功能:
子解释器 (
concurrent.interpreters)带加密的自由线程
mod_wsgi
删除了对Python 3.13 自由线程的实验性支持。
将以下属性添加到
bson.codec_options.TypeRegistry类:.codecs:提供对TypeRegistry对象的特定类型编解码器的访问权限.fallback_encoder:提供对TypeRegistry对象的回退编码器的访问权限
将
append_metadata()方法添加到MongoClient和AsyncMongoClient类中。您可以使用此方法按需向服务器发送客户端元数据。提高使用主节点 (primary node in the replica set)读取引用时的服务器选择性能。
4.13 中的新增功能
PyMongo v 4.13版本包括以下新功能:
PyMongo Async API正式发布。要学习;了解如何从PyMongo驾驶员或Motor库迁移到PyMongo Async API ,请参阅迁移到PyMongo Async指南。
修复了在使用
w="majority"时无法评估WriteConcern()的错误。
要查看此发布中已解决问题的完整列表,请参阅Jira发布说明。
4.12 中的新增功能
PyMongo v 4.12版本包括以下新功能:
添加对使用
AutoEncryptionOpts的key_expiration_ms参数配置 DEK缓存生命周期的支持。在MongoDB Server 8.1 及更高版本的 CSFLE 和 QE 中添加对
$lookup的支持。添加了
gridfs.asynchronous.grid_file.AsyncGridFSBucket.rename_by_name()和gridfs.grid_file.GridFSBucket.rename_by_name()方法。您可以使用这些方法对具有多个修订版本的文件进行更高效的重命名。添加了
gridfs.asynchronous.grid_file.AsyncGridFSBucket.delete_by_name()和gridfs.grid_file.GridFSBucket.delete_by_name()方法。您可以使用这些方法以更高性能删除具有多个修订版本的文件。AsyncMongoClient对象在创建时不再为mongodb+srv://连接字符串执行 DNS 解析。为了避免阻塞asyncio循环, PyMongo现在将解析推迟到客户端首次连接。为
pymongo.asynchronous.collection.AsyncCollection.distinct()和pymongo.collection.Collection.distinct()方法添加索引提示支持。弃用了
PrimaryPreferred、Secondary、SecondaryPreferred和Nearest读取偏好的hedge参数。PyMongo v5.0 中将删除对hedge的支持。从PyMongo异步驾驶员中删除 PyOpenSSL支持。
允许有效的 SRV 主机名少于 3 个部分。
4.11 中的新增功能
PyMongo v 4.11版本包括以下新功能:
添加了在运行Python v3.13+ 时对自由线程 CPython 的支持。有关自由线程的更多信息,请参阅Python文档。
正在使用的加密需要
pymongocryptv1.12 或更高版本。在未连接的客户端上调用时,
MongoClient.address()和AsyncMongoClient.address()方法会正确区块。添加了对
IndexModel和SearchIndexModel类的__repr__支持。将
sort参数添加到以下方法:Collection.update_one()Collection.replace_one()operations.UpdateOne()operations.UpdateMany()
当
ordered或verboseResults选项设立为True时,如果将MongoClient.bulkWrite()和AsyncMongoClient.bulk_write()方法用于未确认的写入,则它们会引发错误。修复了一个错误,该错误导致在使用旧版MongoDB扩展JSON日期时间表示形式时,
DatetimeMS被错误编码为'{"$date": "X"}'而不是'{"$date": X}'。修复了一个错误,该错误会导致
bson.json_util.loads()方法在解析无效的$date值时引发IndexError而不是ValueError。
4.10 中的新增功能
PyMongo v 4.10版本包括以下新功能:
新增对新的二进制BSON子类型 ( 9 ) 的临时支持,该子类型可通过使用
bson.binary.Binary.from_vector()和bson.binary.Binary.as_vector()方法来高效存储和检索向量。 对BSON子类型9的支持处于beta,在正式发布之前可能会发生变化。当应用程序使用C扩展时,将
"c"添加到driver.name客户端元数据字段。修复了可能导致
AsyncMongoClient死锁的错误。
4.9 的新增功能
PyMongo v 4.9版本包括以下新功能:
新增支持MongoDB Server 8.0和Python 3.13的支持。
添加支持Queryable Encryption范围查询的支持。 要使用此功能,您的应用必须连接到MongoDB Server 8.0或更高版本。 有关Queryable Encryption的更多信息,请参阅MongoDB Server手册中的Queryable Encryption 。
添加新的实验性异步API以替换Motor。 此API处于beta,在正式发布之前可能会有更改。
4.8 中的新增功能
PyMongo v 4.8版本包括以下新功能:
在发布进程中实现了安全软件开发生命周期 (SSDLC)自动化。 Github版本包括软件物料清单 (SBOM) 和与 PyPI 上发布的发行版文件相对应的签名文件。
在
bson.binary.Binary类型的对象中,当二进制子类型为SENSITIVE_SUBTYPE(8) 时,会对repr()方法进行编辑。修复了变更流中的一个错误,在该错误中,可以将
startAtOperationTime和resumeToken字段同时添加到重试尝试中,从而导致重试失败。在Windows上,将
os.name的握手元数据更改为Windows,以缩短导入时间。改进了
MongoClient操作的性能,尤其是当驾驶员同时运行多个操作时。为 stdlib
ssl模块添加了回退功能(如果导入pyopenssl模块失败并显示AttributeError。
4.7 中的新增功能
PyMongo v 4.7版本包括以下新功能:
添加了
Hello.connection_id、CommandStartedEvent.server_connection_id、CommandSucceededEvent.server_connection_id 和 CommandFailedEvent.server_connection_id属性。添加了对用于客户端字段级加密(CSFLE) 的KMS (KMS ) 提供程序的名称后缀的支持。 此功能需要
pymongocryptv1.9+ 和libmongocryptv1.9+。有关更多信息,请参阅 AutoEncryptionOpts 类的API文档。改进了将 BSON 文档编码为 JSON 的性能。
ClientEncryption.encrypt()和ClientEncryption.encrypt_expression()方法现在允许将key_id参数作为UUID对象传入。膨胀包含
Code值的RawBSONDocument对象不再导致错误。修复了 Python 3.12中的错误 其中,当
MongoClient线程在 Python 解释器关闭期间启动时,错误消息RuntimeError: can't create new thread at interpreter shutdown可能会被写入stderr。修复了
Int64实例无法始终由orjson进行编码的错误。类似以下示例的代码现在可以正确运行:
import orjson from bson import json_util orjson.dumps({'a': Int64(1)}, default=json_util.default, option=orjson.OPT_PASSTHROUGH_SUBCLASS)