def cate_distributed(): pipeline = [ {'$group': {'_id': {'$slice': ['$cates', 2, 1]}, 'counts': {'$sum': 1}}}, {'$sort': {'counts': -1}} ] for i in ItemInfo._get_collection().aggregate(pipeline): yield [i['_id'][0], i['counts']]
def sale_one_day(): pipeline = [ {'$match': {'time': 1}}, {'$group': {'_id': {'$slice': ['$area', 1]}, 'counts': {'$sum': 1}}}, {'$sort': {'counts': -1}} ] for i in ItemInfo._get_collection().aggregate(pipeline): yield [i['_id'][0], i['counts']]
def top_cates(): pipeline = [ {'$group': {'_id': {'$slice': ['$cates', 2, 1]}, 'counts': {'$sum': 1}}} ] for i in ItemInfo._get_collection().aggregate(pipeline): data = { 'name': i['_id'][0], 'y': i['counts'], } yield data
def top_area(): pipeline = [ {'$group': {'_id': {'$slice': ['$area', 1]}, 'counts':{'$sum': 1}}}, {'$sort': {'counts': -1}} ] for i in ItemInfo._get_collection().aggregate(pipeline): data = { 'name': i['_id'][0], 'y': i['counts'] } yield data
def top_x(date1, date2, area, limit): pipeline = [ {'$match': {'$and': [{'pub_date': {'$gt': date1, '$lt': date2}}, {'area': {'$all': area}}]}}, {'$group': {'_id': {'$slice': ['$cates', 2, 1]}, 'counts': {'$sum': 1}}}, {'$sort': {'counts': -1}}, {'$limit': limit} ] for i in ItemInfo._get_collection().aggregate(pipeline): data = { 'name': i['_id'][0], 'data': [i['counts']], # 'type': 'column' } yield data