MongoDB聚合基本操作

聚合是指对取出的数据进行一系列的处理和分析,具体操作用到aggregate方法和管道操作符。

下面列出常用的几种管道操作符:

1. $match

用于筛选记录:

> db.collection.aggregate({'$match': {'key': 'value'}})

2. $project

用于选择出想要的字段:

> db.collection.aggregate({'$project': {'author': 1, '_id': 0}})

也可以进行重命名后显示,注意要将改名前的字段去掉:

> db.collection.aggregate({'$project': {'userid': '$_id', '_id': 0}})

$project也可以接受表达式,如下面的project返回两个值之和,记录为total字段:

> db.collection.aggregate({'$project': {'total': {'$add': ['v1', 'v2']}}})

类似的数学计算操作符还有$subtract, $multiply, $divide, $mod等。

下面的project会将记录中的月份提取出来:

> db.collection.aggregate({'$project': {'hiremonth': {'$month': '$hiredate'}}})

也可以对时间做减法求出时长:

> db.collection.aggregate({'$project': {'duration': {'$subtract': [{'$year': new Date()}, {'$year': '$hiretime'}]}}})

字符串操作符包括:

$substr(用于截取字符串)、$concat(用于拼接字符串)、$toLower、$toUpper

另外,还有两个控制操作符:

$cond用于条件判断,格式是:'$cond' : [booleanexpr, trueexpr, falseexpr],当booleanexpr判断为真时,执行第一个表达式,否则执行第二个表达式。

$ifNull用于执行替补命令,格式是:'$ifNull': [expr, replaceexpr],当expr不为空时执行expr,否则执行后面一个表达式。

3. $group

$group对记录按照指定字段进行分组。比如下面的例子,分组后同时返回最高和最低的分数:

> db.collection.aggregate({'$group': {'_id': '$grade', 'lowest': {'$min': '$score'}, 'highest': {'$max': '$score'}}})

4. $sort、$limit、$skip

用于排序、限制返回数量和跳过记录数量。

 

posted @ 2018-02-05 17:31  右威卫大将军  阅读(236)  评论(0编辑  收藏  举报