美文网首页
数据库(27)mongodb(下)

数据库(27)mongodb(下)

作者: 錦魚 | 来源:发表于2018-09-30 10:33 被阅读0次

    limit和skip

    limit()
    • 用于读取指定数量的文档

    db.wzry.find().limit(2)

    skip()
    • 用于跳过指定数量的文档

    db.wzry.find().skip(2)

    自定义查询

    • 使⽤$where后⾯写⼀个函数, 返回满⾜条件的数据

    <\!-- 查询年龄大于5的人物 -->
    db.wzry.find({
    $where:function(){
    return this.age>5;
    }
    })


    投影:

    在查询到的返回结果中, 只选择必要的字段
    • 语法
      * db.集合名称.find({},{字段名称:1,...})
      * 参数为字段与值, 值为1表示显示, 值为0不显
      * 特殊: 对于_id列默认是显示的, 如果不显示需要明确设置为0
    
    例子:

    db.wzry.find({},{_id:0,name:1,gender:1})

    排序:

    • ⽅法sort(), ⽤于对结果集进⾏排序
    • db.集合名称.find().sort({字段:1,...})
    • 参数1为升序排列
    • 参数-1为降序排列
    -- 按照age升序排序
    db.wzry.find().sort({age:1})

    统计个数

    • 方法:count() ⽤于统计结果集中⽂档条数
      • db.集合名称.find({条件}).count()
      • db.集合名称.count({条件})
    • 举例

    -- 统计年龄大于等于5的人物

     db.wzry.find({age:{\$gte:5}}).count()
     db.wzry.count({age:{\$gte:5}})
    

    消除重复

    • 方法:distinct() 对数据进行去重

      • db.集合名称.distinct('去重字段',{条件})
    • 举例

      -- 查看所有职业种类
      db.wzry.distinct('type')
      

    mongodb聚合和管道

    聚合
    • 聚合(aggregate)是基于数据处理的聚合管道,每个文档通过一个由多个阶段(stage)组成的管道,可以对每个阶段的管道进行分组、过滤等功能,然后经过一系列的处理,输出相应的结果。
    db.集合名称.aggregate({管道:{表达式}})



    常用管道

    • 在mongodb中,⽂档处理完毕 后, 通过管道进⾏下⼀次处理
    常用管道如下:
    • $group 将集合中的⽂档分组, 可⽤于统计结果
    • $match过滤数据, 只输出符合条件的⽂档
    • $project修改输⼊⽂档的结构, 如重命名、 增加、 删除字段、 创建计算结果
    • $sort将输⼊⽂档排序后输出
    • $limit限制聚合管道返回的⽂档数(一页存放的数量)
    • $skip跳过指定数量的⽂档, 并返回余下的⽂档(页数)
    • $unwind将数组类型的字段进⾏拆分

    表达式

    • 处理输⼊⽂档并输出
    • 语法:表达式:'$列名'
    常用表达式:
    • $sum计算总和, $sum:1 表示以⼀倍计数
    • $avg计算平均值
    • $min获取最⼩值
    • $max获取最⼤值
    • $push在结果⽂档中插⼊值到⼀个数组中
    • $first根据资源⽂档的排序获取第⼀个⽂档数据
    • $last根据资源⽂档的排序获取最后⼀个⽂档数据

    group

    $group
    • 将集合中的文档分组,可用于统计结果
    • _id表示分组的依据,使用某个字段的格式为'$字段'
    • 例1: 统计男生、女生的总人数
    db.stu.aggregate(
        {
            $group:{
                _id:'$gender',
                counter:{$sum:1}
            }
        }
    )
    
    Group by null
    • 将集合中所有文档分为一组
    • 例2:求学生总人数、平均年龄
    db.stu.aggregate(
        {
            $group:
            {
                _id:null,
                counter:{$sum:1},
                avgAge:($avg:'$age')
            }
        }
    )
    

    透视数据


    相关文章

      网友评论

          本文标题:数据库(27)mongodb(下)

          本文链接:https://www.haomeiwen.com/subject/woevoftx.html