Я думаю, что здесь у нас есть две проблемы 1. Нам нужно определить агрегатный конвейер на этапы, используя квадратную скобку, как предложено @Mahesh Nayak
mongo_query = db.transacciones.aggregate([
{
$project :
{
month : {$month : "$day"},
year : {$year : "$day"},
pr_avg_rate : 1,
pr_avg_rate_approved : 1,
pr_numbers : 1,
pr_numbers_approved : 1,
pr_total_amount : 1,
pr_total_amount_approved : 1
}
},
{
$group : {
_id : {month : "$month" ,year : "$year" },
pr_avg_rate : {$avg : "$pr_avg_rate"},
pr_avg_rate_approved : {$avg : "$pr_avg_rate_approved"},
pr_numbers : {$sum : "$pr_numbers"},
pr_numbers_approved : {$sum : "$pr_numbers_approved"},
pr_total_amount : {$sum : "$pr_total_amount"},
pr_total_amount_approved : {$sum : "$pr_total_amount_approved"}
}
}])
Вторая проблема с функцией: вы передаете имя коллекции и запрос, но запрашиваете уже курсор mongodb.
, либо вам нужно изменить запрос, как показано ниже
query = [
{
$project :
{
month : {$month : "$day"},
year : {$year : "$day"},
pr_avg_rate : 1,
pr_avg_rate_approved : 1,
pr_numbers : 1,
pr_numbers_approved : 1,
pr_total_amount : 1,
pr_total_amount_approved : 1
}
},
{
$group : {
_id : {month : "$month" ,year : "$year" },
pr_avg_rate : {$avg : "$pr_avg_rate"},
pr_avg_rate_approved : {$avg : "$pr_avg_rate_approved"},
pr_numbers : {$sum : "$pr_numbers"},
pr_numbers_approved : {$sum : "$pr_numbers_approved"},
pr_total_amount : {$sum : "$pr_total_amount"},
pr_total_amount_approved : {$sum : "$pr_total_amount_approved"}
}
}]
#Or modify your function as below
def execute_agregation(self, query):
result = None
try:
result = query
print(result)
except Exception as error:
print('Error: connection not established {}'.format(error))
return None
else:
return result