From 12337802657d7e6d03a1fd19e7f412d54b3ef05d Mon Sep 17 00:00:00 2001 From: Stefan Wojcik Date: Mon, 8 Jun 2015 13:46:19 -0700 Subject: [PATCH] make aggregate_sum/average compatible with pymongo 3.x --- mongoengine/queryset/base.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/mongoengine/queryset/base.py b/mongoengine/queryset/base.py index 38389fbf..b949e121 100644 --- a/mongoengine/queryset/base.py +++ b/mongoengine/queryset/base.py @@ -1261,8 +1261,13 @@ class BaseQuerySet(object): { '$match': self._query }, { '$group': { '_id': 'sum', 'total': { '$sum': '$' + field } } } ]) - if result['result']: - return result['result'][0]['total'] + if IS_PYMONGO_3: + result = list(result) + if result: + return result[0]['total'] + else: + if result['result']: + return result['result'][0]['total'] return 0 def average(self, field): @@ -1333,8 +1338,13 @@ class BaseQuerySet(object): { '$match': self._query }, { '$group': { '_id': 'avg', 'total': { '$avg': '$' + field } } } ]) - if result['result']: - return result['result'][0]['total'] + if IS_PYMONGO_3: + result = list(result) + if result: + return result[0]['total'] + else: + if result['result']: + return result['result'][0]['total'] return 0 def item_frequencies(self, field, normalize=False, map_reduce=True):