mongoDB数据库之聚合

使用聚合框架可以对集合中的文档进行变换和组合,用多个构件创建一个管道,用于对一连串的文档进行处理!构件包括筛选(filtering

), 投射(projecting),分组(grouping),排序(sorting),限制(limiting)和跳过(skipping)等

使用方法是使用aggregate函数

# 语法:
db.col.aggregate({"$构件": {"字段名": 1}})

①:"$project"的使用

这个方法是使用类似于查询中的字段选择器 --> db.col.find({"xx":"xxx"}, {"name":1, "age":1, "gender": 0})

例:

②:"$group"的使用

这个方法会按照指定字段分组,由"_id"指定

例:如果按下面使用方式,加上count的话,表示如果zone对应的名字出现一次,就会对其加1

③:"$sort"的使用

这个方法会根据指定字段排序(正序1或者倒序-1),和使用sort方法一样

例:

④:"$limit"的使用

这个方法会指定数量返回,和limit方法一样

例:

综合使用上述构件如下:

例:

****************************************************************************************************************************************************************************************************************************************

以上为几个构件的简单使用,构件还可以有更加复杂的用法

一:"$project"

 (1) 管道表达式

        就是上面的使用方式

 (2) 数学表达式

        操作符:"$add" 接收一个或多个表达式,将这些表达式相加

                      "$subtract" 接收两个表达式,用第一个表达式减去第二个表达式作为结果

                      "$multiply"  接收一个或多个表达式,将其相乘

                      "$divide"   接收两个表达式,用第一个除以第二个商作为结果

                     "$mod"  接收两个表达式,用第一个除以第二个余数作为结果

(3)日期表达式

        操作符: "$year" 提取年份

                       "$month" 提取月份

                      "$week" 提取周

                      "$dayOfMonth" 提取月中的第几天

                      "$dayOfWeek" 提取周中的第几天

                      "$dayOfYyear" 提取年中的第几天

                      "$hour" 提取小时

                      "$minute" 提取分钟

                     "$second" 提取秒

  (4)字符串表达式

        操作符 :"$substr" 截取字符串

                       "$concat" 将给定表达式中字符串连接在一起

                       "$toLower" 返回小写形式

                       "$toUpper" 返回大写形式

   (5) 逻辑表达式

        操作符: "$cmp" 比较两个值,前者大返回正数,反之,返回负数

                       "$strcasecmp" 比较两个字符串

                       "$eq/ne/gt/gte/lt/lte" 比较两个值,返回大的值

                      "$and" 如果所有表达式值都是true,则返回true,反之,返回false

                      "$or" 只要有任意表达式值是true,则返回true

                      "$not" 对表达式取反

二:"$group"

   (1) 分组操作符,上面所述

   (2) 算术操作符:

           "$sum" 计算总出现次数

          "$avg": 计算平均值

    (3) 极值操作符

         "$max" 最大值

         "$min" 最小值

         "$first"  第一个值

         "$last" 最后一个值

(4)数组操作符

       "$addToSet" 如果表达式不包含在当前数组中,则添加

       "$push" 不管是是什么值都添加到数组中

三,"$unwind" 将数组中的每一个值拆分为单独的文档,例如,有一篇拥有多条评论的文章,可以使用其将每条评论拆分为独立的文档

数据格式:{"_id": xx, "post": "hello", "author": "xx", "comments": [{}, {}, {}]}

#语法:
db.xx.aggregate({"$unwind": "$comments"})

     

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页