Python升级至3.12.5后PyMongo create_collection报错问题
Python3.12.5升级后PyMongo创建带选项集合的报错解决
错误原因分析
- 原代码参数传递错误:
create_collection的第二个位置参数是codec_options(用于指定BSON编解码规则),而非集合创建的配置选项。之前Python3.12.4版本中,PyMongo的参数检查逻辑未严格校验该参数类型,升级到3.12.5后类型检查触发,导致报错提示codec_options必须是bson.codec_options.CodecOptions实例。 - 误用
validators参数:MongoDB的集合创建命令仅支持validator(单数)参数用于指定文档校验规则,validators是无效参数,因此触发Atlas的错误提示。
正确创建方式
将集合配置选项通过关键字参数传递,或用**展开字典传入,两种写法如下:
写法一:直接指定关键字参数
self.client = MongoClient(MONGODB_CONNECT) self.db = self.client[MONGODB_NAME] self.db.create_collection( collection_name, timeseries={ "timeField": "event_time", "metaField": "metadata", "granularity": "minutes" }, validator=event_validator )
写法二:展开配置字典
option = { "timeseries": { "timeField": "event_time", "metaField": "metadata", "granularity": "minutes" }, "validator": event_validator, } self.client = MongoClient(MONGODB_CONNECT) self.db = self.client[MONGODB_NAME] self.db.create_collection(collection_name, **option)
内容的提问来源于stack exchange,提问作者Guian
相关产品推荐
相关产品推荐

