def order_by_recorded_msg_count(self, limit=None):
"""Sort by COUNT OF RECEIVED MESSAGES"""
RECEIVED_MESSAGES = 'rcv_sum'
aggr_pipeline = [
{ '$addFields': { RECEIVED_MESSAGES: { '$sum': [ '$' + group_data.MESSAGE_RECORDS + '.' + msg_stats_data.RECEIVE + '.' + str(type_enum) + '.' + k for k in (msg_stats_pair.TRIGGERED, msg_stats_pair.NOT_TRIGGERED) for type_enum in list(msg_type) ] } } },
{ '$sort': { RECEIVED_MESSAGES: pymongo.DESCENDING } }
]
if limit is not None and isinstance(limit, (int, long)):
aggr_pipeline.append({ '$limit': limit })
aggr_result = list(self.aggregate(aggr_pipeline))
if len(aggr_result) > 0:
return [group_data(data) for data in aggr_result]
else:
return []
# private
评论列表
文章目录