python爬虫(5)——Mongo聚合函数
来源:互联网 发布:手机音乐调速软件 编辑:程序博客网 时间:2024/05/19 02:26
python爬虫(5)——Mongo聚合函数
MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。
一、管道的概念
管道在Unix和Linux中一般用于将当前命令的输出结果作为下一个命令的参数。
MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。
表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。
这里我们介绍一下聚合框架中常用的几个操作:
$project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
**
$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库;
- python爬虫(5)——Mongo聚合函数
- python爬虫中的mongo实践
- mongo聚合
- Mongo聚合
- 聚合数据API爬虫:Python
- 查询—聚合函数
- 聚合函数——nvl()
- python——爬虫
- python——爬虫
- Python——爬虫
- python爬虫—安装
- mongo aggregate聚合查询
- mongo之聚合
- mongo聚合操作
- Mongo DB聚合
- mongo 聚合查询sql
- Python:聚合函数(groupby)
- ORACLE 常用函数——聚合函数
- 【附对比清单,赶紧收藏】我是怎么选择DDoS解决方案的?
- android studio 传感器之获取系统传感器信息
- Lucene 近实时索引
- PhpExcel中文帮助手册|PhpExcel使用方法
- 探究startActivityForResult在singleTop和singleTask启动模式讨论
- python爬虫(5)——Mongo聚合函数
- position的四个属性值: relative ,absolute ,fixed,static
- socket编程实例TCP
- java中String、StringBuffer、StringBuilder的区别
- 2016年全新的Codeigniter教程发布啦
- MFC控件实例之颜色对话框(VS2010版本)
- Memcached安装
- shell中用bc进行浮点运算
- 图片圆角的做法