十一、聚合函数

1、管道操作符
~$match:用于进行删选,不能用于地理空间操作符
{$match:{"state":"OR"}}

~$project
*设置那个字段该返回
{$project:{"author":1,"_id":0}}

*重命名(注意后面有个_id:0这个是必须得,不然会返回两次)


*重命名并排序

虽然这两种方法都可以,但是还是要尽量使用之前的名字,不要使用命名后的名字
*数学表达式
加法


其他的就是类似这样的写法
$add:加法
$subtract:减法
$multiply:乘法
$divide:除法
$mod:余数
*日期表达式
$year:年
$month:月
$week:工作周
$dayOfMonth:这个月里面的几号
$dayOfWeek:这周里面的周几,周日是周一
$dayOfYear:今年的第几天
$hour:小时
$minute:分钟
$second:秒

*字符串表达式
$substr:截取
$concat:连接
$toLower:变小写
$toUpper:变大写


*逻辑表达式(其中描述中的1,2代表expr1,expr2)
$cmp:[expr1,expr2]比较,如果1=2则返回0;如果1<2则返回负数,如果1>2则返回正数
$strcasecmp:[expr1,expr2]字符串比较,区分大小写,只对罗马字符组成的字符串有效
$eq/$ne/$gt/$gte/$lt/$lte:比较,返回true或false
$and与
$or或
$not反
$cond:[booleanExpr,expr2,expr3]三目运算符,如果booleanExpr true返回2,如果false返回3
$ifnull:[expr1,expr2]如果是空返回2,否则1
综上应用:
如果一个教授给学生打分,出勤10%,成绩30%,期末考试60%,老师宠爱的学生呢,就不用算了,直接100,怎么计算学生总分

~$group
$sum:和
$avg:平均值
看每个国家的总后入,分组

$max:最大值
$min:最小值
$first:第一个值
$last:最后一个值

$addToSet:将另一个数组放进当前数组中,顺序不确定,元素唯一
$push:元素不唯一,不管什么都加到里面
看之前的神奇修改器中例子
$unwin拆分

$sort排序
$limit限制接收前几个文档
$skip跳过几个文档

备注:在使用管道($project,$group,$unwind)之前尽量将过多的文档和字段过滤掉,因为如果过多使用聚合MongoDB发现占用内存超过20%,就会直接报错
2、MapReduce
MapReduce非常强大,灵活,有些问题过于复杂,所以没办法使用聚合函数,这个是使用JavaScript作为查询语言,但是非常慢,不适合用于实时数据分析

找到一篇很好的博文说MapReduce很厉害 http://www.cnblogs.com/loogn/archive/2012/02/09/2344054.html





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值