Mongodb Aggregation

聚合

聚合操作处理数据记录并返回计算结果。聚合操作组将来自多个文档的值组合在一起,并且可以对分组数据执行各种操作以返回单个结果。聚合的三种方法:the aggregation pipeline, the map-reduce function, the single purpose aggregation methods

管道

Aggregation Pipeline Stages:

操作意义实例备注
$match查询已经筛选的文档db.c.aggregate([{$match:{name:”JoeSchmoe”,maxTime: { $lt:20},minTime: { $gt: 5 },avgTime: { $gt: 7 }}}])可以配合常规查询操作符使用
$project从文档中提取字段,重命名字段db.users.aggregate([{$project:{‘my_id’:’$_id’,’_id’:0,’age’:1}}])值为0则不提取该键值,重命名使用 ‘new_key’:’$old_key’
$addFields将新字段加入返回文档{$addFields:{‘newTime’:new Date()}}3.4 新增
$bucket数据进行分类
$limit限制文档返回数{$limit:5}
$skip跳过指定数文档{$skip:5}
$group将文档分组db.users.aggregate([{$group:{‘_id’:’$age’,’count’:{$sum:1}}}])根 age 分组,(需要使用已经有的 fieldName)
$sort指定字段排序{$sort:{“age”:1}}
$geoNear指定地理位置的有序文档

官方相关文档

Aggregation Pipeline Operators:

操作意义实例备注
$add{ $add: [,, … ] }
$subtracta减b{ $subtract: [a,b] }
$multiply{ $multiply: [,, … ] }
$dividea除以b{ $divide: [a,b] }
$moda除以b的余数{ $mod: [a,b] }
$concat链接字符串{ { $concat: [ , , … ] }
$substr截取字符串{ $substr: [ , , ] }
$cmp比较{ $substr: [ num1, num2 ] }num1 = num2 ,return 0;
num1 >num2 ,return 1;
num1 < num2, return -1
$strcasecmp比较字符串{ $strcasecmp: [ string1, string2] }
$avg均值{ { $avg: [ ,, … ] }
$sum累加{ { $sum: }
{ /$sum: [ , … ] }
$group 时为当个参数 ;
$project 为数组参数
$first分组第一个值{ { $first : expression }
$last分组最后一个值{ { $last : expression }
$max分组最大值{ { $max : expression }
$min分组最小值{ { $min : expression }

官方相关文档

技巧:
尽量在管道开始阶段缩减文档和字段;
管道如果不是直接从原本的集合中使用数据,则不能在筛选、排序中使用索引

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值