美文网首页数据挖掘
Python爬虫实战笔记_3 大作业mongo进阶查询

Python爬虫实战笔记_3 大作业mongo进阶查询

作者: Sugeei | 来源:发表于2016-07-16 10:31 被阅读114次
    mongo pipeline 的应用
    • '$match' 对应WHERE子句
      当数据表中address字段为一个列表时,如['a' , 'b' , 'c'], 想要匹配其中的第二个值'b', pipeline写成� {'$match': {'address': 'b' }} 也能达到预期效果
    • '$group' 对应GROUP BY子句
    • pipeline 中定义的筛选条件是顺序执行的,如果调换{'$sort'} 跟 {'$limit'} 的位置,就会发现结果不对了
    pipeline = [
            {'$match': {'address': {'$all': [areas[0]]}}},
            {'$group': {'_id': {'$slice': ['$category', 0, 1]}, 'counts': {'$sum': 1}}},
            {'$sort': {'counts': -1}},
            {'$limit': 3}
        ]
    
    Source code
    # 由于数据太少了,去掉了发贴时间的筛选条件
    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

    相关文章

      网友评论

        本文标题:Python爬虫实战笔记_3 大作业mongo进阶查询

        本文链接:https://www.haomeiwen.com/subject/eildjttx.html