09-【MongoDB入门教程】使用mongo命令行进行数据聚合
2015-06-15 18:13
816 查看
使用mongo命令行进行数据聚合
概述
MongoDB可以执行数据聚合,比如按指定Key分组,计算总数,求不同分组的值。使用
aggregate()方法执行一个基于步骤的聚合操作(类似于Linux管道)。
aggregate()接收一个步骤数组成为它的参数,每个步骤描述对数据处理的操作。
db.collection.aggregate( [ <stage1>, <stage2>, ... ] )
按字段分组并计算总数
使用$group管理操作符进行分组操作。在$group操作符中,使用_id来说明分组的key。$gropu管理操作使用$+字段名的方式来访问分组Key的。可以在每个分组管理操作中进行分组计算。下面的例子把restaurants集合按borough字段分组,并使用$sum操作符计算每个分组的文档数。
db.restaurants.aggregate( [ { $group: { "_id": "$borough", "count": { $sum: 1 } } } ] );
结果集包含以下文档:
{ "_id" : "Staten Island", "count" : 969 } { "_id" : "Brooklyn", "count" : 6086 } { "_id" : "Manhattan", "count" : 10259 } { "_id" : "Queens", "count" : 5656 } { "_id" : "Bronx", "count" : 2338 } { "_id" : "Missing", "count" : 51 }
_id字段包含了不同的borough值,它也是分组参照的Key值。
过滤并分组文档
使用$match管道操作符过滤文档。
$match使用的是MongoDB查询语法。下面的管道使用
$macth查询borough字段值为"Queens"并且cuisine字段值为"Brazilian"的所有文档。然后
$group分组管理操作符把匹配的所有文档按address.zipcode字段每组,并且使用
$sum计算器计算总数。
db.restaurants.aggregate( [ { $match: { "borough": "Queens", "cuisine": "Brazilian" } }, { $group: { "_id": "$address.zipcode" , "count": { $sum: 1 } } } ] );
结果集包含的文档如下:
{ "_id" : "11368", "count" : 1 } { "_id" : "11106", "count" : 3 } { "_id" : "11377", "count" : 1 } { "_id" : "11103", "count" : 1 } { "_id" : "11101", "count" : 2 }
_id字段包含不同的zipcode的值。它是分组的Key。
相关文章推荐
- 分享微信开发Html5轻游戏中的几个坑
- PHP添加yaf xhprof mongodb 同理
- mongodb安装
- 如何在 Ubuntu 上安装 MongoDB
- perl操作MongoDB报错undefined symbol: HeUTF8解决方法
- C#中使用1.7版本驱动操作MongoDB简单例子
- MongoDB系列教程(四):设置用户访问权限
- php实现的mongodb操作类实例
- 解决mongodb在ubuntu下启动失败,提示couldn‘t remove fs lock errno:9 Bad file descriptor的错误
- 在PostgreSQL的基础上创建一个MongoDB的副本的教程
- java操作mongodb示例分享
- php对mongodb的扩展(初出茅庐)
- 作为PHP程序员应该了解MongoDB的五件事
- 基于MySQL到MongoDB简易对照表的详解
- MongoDB入门教程之C#驱动操作实例
- MongoDB为用户设置访问权限
- MongoDB db.serverStatus()输出内容中文注释
- mongodb与mysql命令详细对比
- Ubuntu中安装MongoDB及执行一些简单操作笔记
- MongoDB 语法使用小结