使用PyMongo执行聚合操作时遭遇session参数非法值错误
问题原因
你调用aggregate()方法时传参错误:aggregate()的第二个参数接收的是ClientSession对象或None,而你把投影操作projection当成第二个参数传入,导致方法将其识别为session参数,从而触发错误。
解决方法
MongoDB聚合操作的所有阶段(包括$project)都需要放在同一个管道数组里,不需要单独传递投影参数。把你的projection阶段合并到pipeline数组即可。
修正后的代码
import pymongo client = pymongo.MongoClient() db = client["gym"] print(db) pipeline = [ { "$group": { "_id": "$Age", "sportifs": {"$push": {"fullName": {"$concat": ["$Prenom", " ", "$Nom"]}}}, } }, # 将投影阶段合并到管道中 { "$project": {"Age": "$_id", "ListOfSportifs": "$sportifs", "_id": 0} } ] myCollection = db["Sportifs"] # 只传递pipeline一个必填参数 sportifsCouple = myCollection.aggregate(pipeline) for sportif in sportifsCouple: print(sportif)
内容的提问来源于stack exchange,提问作者ibtissam elhammoumy
相关产品推荐
相关产品推荐

