MongoDB聚合使用表达式运算符(函数)分组按条件计数统计案例一则
Posted 肖永威
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB聚合使用表达式运算符(函数)分组按条件计数统计案例一则相关的知识,希望对你有一定的参考价值。
在MongoDB聚合统计过程中,经常使用表达式运算符用于构造用于聚合管道阶段的表达式。运算符表达式类似于接受参数的函数。通常,这些表达式采用参数数组,并具有以下形式:
<operator>: [ <argument1>, <argument2> ... ]
如果运算符接受单个参数,则可以忽略指定参数列表的外部数组:
<operator>: <argument>
例如分组按条件计数统计案例:
使用了'$concat'、'$substr'、'$sum'、'$cond'、'$eq'、'$lt'
等运算符,详见如下代码:
db.getCollection('customerfeature').aggregate([
'$project':'yearmonth':'$yearmonth','lateststatus':'$lateststatus','trademonth':'$concat':['$substr':['$occurtime',0,4],'$substr':['$occurtime',5,2]],
'$group':'_id':'$yearmonth',
'allcount':'$sum':1,
'activecount':'$sum':'$cond':['$eq':['$trademonth','$yearmonth'],1,0],
'count':'$sum':'$cond':['$lt':['$lateststatus',3],1,0],
'churncount':'$sum':'$cond':['$eq':['$lateststatus',3],1,0]
,
'$sort':'_id':1
],
'allowDiskUse':true)
注意小心得:
- 首先,表达式形式为中括号“[]”,避免与大括号“”混淆;
- 其次,参数为引用数据,前面加“$”符号。
其中,原数据集中occurtime为字符串,格式为yyyy-mm-dd,例如:2017-11-02。
其中:
$concat
连接操作符,将给定表达式中的字符串连接一起。用法:
$concat: [ <expression1>, <expression2>, ... ]
$substr
用于返回子字符串。用法:
$substr: [ <string>, <start>, <length> ]
$cond
条件操作符。用法:
$cond: [ <boolean-expression>, <true-case>, <false-case> ]
$eq
比较表达式中两个是否相等,是则返回true,否则返回false。
用法 $eq: [ <expression1>, <expression2> ]
参考:
[1]. Aggregation Pipeline Operators. MONGODB MANUAL 4.0
[2]. 莫问今朝. 【mongoDB查询进阶】聚合管道(三)–表达式操作符 . 博客园 . 2018.03
以上是关于MongoDB聚合使用表达式运算符(函数)分组按条件计数统计案例一则的主要内容,如果未能解决你的问题,请参考以下文章