python爬虫(5)——Mongo聚合函数

来源:互联网 发布:手机音乐调速软件 编辑:程序博客网 时间:2024/05/19 02:26

python爬虫(5)——Mongo聚合函数

MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。

一、管道的概念

管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。
MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。
表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。
这里我们介绍一下聚合框架中常用的几个操作:
$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
**matchmatch使用MongoDB的标准查询操作。
$limit:用来限制MongoDB聚合管道返回的文档数。
$skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
$unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
$group:将集合中的文档分组,可用于统计结果。
$sort:将输入文档排序后输出。
$geoNear:输出接近某一地理位置的有序文档。

二、实际应用

在这里,我们主要使用它的这四个操作:

1、首先看我们的数据库首先是这样的

这里写图片描述

pipeline2 = [    {'$match' : {'time' :  '2016-07-19'}},    {'$group':{'_id':'$type','counts':{'$sum':1}}},    {'$sort' :{'counts': -1}},    {'$limit':20}]#记住这里的pipeline是一个数组;

$match:输入的就是我们的筛选条件;
$group:输入的就是我们的对数据库中某一项数据进行统计,比如说上面我们统计了type这一项数据的总和是多少;
这里写图片描述
$sort:顾名思义就是对数据进行排序,他参考的标准就是group中的值;1为升序,-1为降序;
limit:限制MongoDB聚合管道返回的文档数;
然后我们来运行看一下:

for i in ganji_info.aggregate(pipeline2): #ganji_info是我们数据库中的一张表;    print(i)

结果是:
{‘_id’: ‘凳子’, ‘counts’: 6}
{‘_id’: ‘冰柜’, ‘counts’: 2}
{‘_id’: ‘鱼缸’, ‘counts’: 2}
{‘_id’: ‘电视机’, ‘counts’: 2}
{‘_id’: ‘文件柜/档案柜’, ‘counts’: 2}
{‘_id’: ‘餐桌’, ‘counts’: 1}
{‘_id’: ‘门窗’, ‘counts’: 1}
{‘_id’: ‘餐椅’, ‘counts’: 1}
{‘_id’: ‘冰箱’, ‘counts’: 1}
{‘_id’: ‘其他架子’, ‘counts’: 1}
{‘_id’: ‘充气床’, ‘counts’: 1}
{‘_id’: ‘电视柜’, ‘counts’: 1}
{‘_id’: ‘其他家具转让’, ‘counts’: 1}
{‘_id’: ‘沙发’, ‘counts’: 1}
{‘_id’: ‘空调’, ‘counts’: 1}
{‘_id’: ‘单人床’, ‘counts’: 1}

这个函数是我们通过pymongo中的方法,实现了对数据库的操作,所以你事先要先安装pymongo库;

0 0
原创粉丝点击