mongo pipeline 的應(yīng)用
- '$match' 對(duì)應(yīng)WHERE子句
當(dāng)數(shù)據(jù)表中address字段為一個(gè)列表時(shí),如['a' , 'b' , 'c']隘蝎, 想要匹配其中的第二個(gè)值'b', pipeline寫成? {'$match': {'address': 'b' }} 也能達(dá)到預(yù)期效果 - '$group' 對(duì)應(yīng)GROUP BY子句
- pipeline 中定義的篩選條件是順序執(zhí)行的两嘴,如果調(diào)換{'$sort'} 跟 {'$limit'} 的位置姚炕,就會(huì)發(fā)現(xiàn)結(jié)果不對(duì)了
pipeline = [
{'$match': {'address': {'$all': [areas[0]]}}},
{'$group': {'_id': {'$slice': ['$category', 0, 1]}, 'counts': {'$sum': 1}}},
{'$sort': {'counts': -1}},
{'$limit': 3}
]
Source code
# 由于數(shù)據(jù)太少了囊嘉,去掉了發(fā)貼時(shí)間的篩選條件
def gen_data():
pipeline = [
{'$match': {'address': {'$all': [areas[0]]}}},
{'$group': {'_id': {'$slice': ['$category', 0, 1]}, 'counts': {'$sum': 1}}},
{'$sort': {'counts': -1}},
{'$limit': 3}
]
for i in tinfo.aggregate(pipeline):
item = {
'name': i['_id'][0],
'data': [i['counts']],
'type': 'column'
}
yield item
運(yùn)行結(jié)果
Screen Shot 2016-07-10 at 9.12.26 AM.png