Python中的Mongodb聚合:无法腌制'SSLContext'对象

Posted

技术标签:

【中文标题】Python中的Mongodb聚合:无法腌制\'SSLContext\'对象【英文标题】:Mongodb aggregation in Python : cannot pickle 'SSLContext' objectPython中的Mongodb聚合:无法腌制'SSLContext'对象 【发布时间】:2021-10-22 02:11:36 【问题描述】:

我需要找到相同组的数量(例如相同颜色产品或相同价格产品的数量),我尝试使用“$group”进行聚合。

result = collection.aggregate(
                            [
                            
                                "$group" : "_id":group_aggregation_format, "count": 
                                           "$sum":1
                            
                            ])
print(result)

group_aggreagtion_format 是一个类似 'title': '$title', 'colour': '$colour'的数据

然后我得到这个错误

| INFO:dill:# T4
web_1            | D2: <dict object at 0x7efec3bfbe40>
web_1            | INFO:dill:D2: <dict object at 0x7efec3bfbe40>
web_1            | T4: <class 'pymongo.client_options.ClientOptions'>
web_1            | INFO:dill:T4: <class 'pymongo.client_options.ClientOptions'>
web_1            | # T4
web_1            | INFO:dill:# T4
web_1            | D2: <dict object at 0x7efec3c13dc0>
web_1            | INFO:dill:D2: <dict object at 0x7efec3c13dc0>
web_1            | T4: <class 'pymongo.common._CaseInsensitiveDictionary'>
web_1            | INFO:dill:T4: <class 'pymongo.common._CaseInsensitiveDictionary'>
web_1            | # T4
web_1            | INFO:dill:# T4
web_1            | D2: <dict object at 0x7efec3b84f00>
web_1            | INFO:dill:D2: <dict object at 0x7efec3b84f00>
web_1            | D2: <dict object at 0x7efec3a79240>
web_1            | INFO:dill:D2: <dict object at 0x7efec3a79240>
web_1            | # D2
web_1            | INFO:dill:# D2
web_1            | D2: <dict object at 0x7efec3bbfc40>
web_1            | INFO:dill:D2: <dict object at 0x7efec3bbfc40>
web_1            | # D2
web_1            | INFO:dill:# D2
web_1            | # D2
web_1            | INFO:dill:# D2
web_1            | T6: <class 'pymongo.auth.MongoCredential'>
web_1            | INFO:dill:T6: <class 'pymongo.auth.MongoCredential'>
web_1            | # T6
web_1            | INFO:dill:# T6
web_1            | T4: <class 'pymongo.auth._Cache'>
web_1            | INFO:dill:T4: <class 'pymongo.auth._Cache'>
web_1            | # T4
web_1            | INFO:dill:# T4
web_1            | D2: <dict object at 0x7efea14a0c80>
web_1            | INFO:dill:D2: <dict object at 0x7efea14a0c80>
web_1            | # D2
web_1            | INFO:dill:# D2
web_1            | T4: <class 'pymongo.pool.PoolOptions'>
web_1            | INFO:dill:T4: <class 'pymongo.pool.PoolOptions'>
web_1            | # T4
web_1            | INFO:dill:# T4
web_1            | D2: <dict object at 0x7efea1524d80>
web_1            | INFO:dill:D2: <dict object at 0x7efea1524d80>
web_1            | cannot pickle 'SSLContext' object

你知道我做错了什么吗?这是我做聚合的方式吗?提前致谢!!

【问题讨论】:

【参考方案1】:

这几乎肯定不是您的查询本身;问题在于您如何创建连接(MongoClient)。

在您执行第一个数据库命令之前,pymongo 不会建立服务器连接,因此即使错误出现在聚合命令上,问题仍然存在于代码的上游。

【讨论】:

以上是关于Python中的Mongodb聚合:无法腌制'SSLContext'对象的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Python 3 中腌制和取消腌制到可移植字符串

Python:无法腌制类型 X,属性查找失败

Python多处理-TypeError:无法腌制'_tkinter.tkapp'对象

Python 多处理 PicklingError:无法腌制 <type 'function'>

Python多处理:AttributeError:无法腌制本地对象

Python多处理PicklingError:无法腌制<type'function'>