Python爬蟲實戰(zhàn)筆記_3 大作業(yè)mongo進階查詢

mongo pipeline 的應用
  • '$match' 對應WHERE子句
    當數(shù)據(jù)表中address字段為一個列表時,如['a' , 'b' , 'c'], 想要匹配其中的第二個值'b', pipeline寫成? {'$match': {'address': 'b' }} 也能達到預期效果
  • '$group' 對應GROUP BY子句
  • pipeline 中定義的篩選條件是順序執(zhí)行的,如果調換{'$sort'} 跟 {'$limit'} 的位置,就會發(fā)現(xiàn)結果不對了
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ā)貼時間的篩選條件
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
運行結果
Screen Shot 2016-07-10 at 9.12.26 AM.png
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容