zoukankan      html  css  js  c++  java
  • mongo排序,分页和聚合

    一 MongoDB排序

    准备数据

    use my_test1
    
    db.c1.insert({_id:1,name:"a",sex:1,age:1})
    db.c1.insert({_id:2,name:"a",sex:1,age:2})
    db.c1.insert({_id:3,name:"b",sex:2,age:3})
    db.c1.insert({_id:4,name:"c",sex:2,age:4})
    db.c1.insert({_id:5,name:"d",sex:2,age:5})
    db.c1.find()

    clipboard

    语法:

    db.集合名.find().sort({域名: 1/-1})    // 1:升序  2:降序

    二 MongoDB分页

    语法:

    db.集合名.find().sort().skip(数字).limit(数字)

    说明: skip跳过指定数量的数据

    limit 限制查询的数量

    练习:

    1、降序查询两条数据

    db.c1.find().sort({age:-1}).skip(0).limit(2)

    clipboard

    2、降序查询 跳过两条并查询两条

    db.c1.find().sort({age:-1}).skip(2).limit(2)

    clipboard

    总结

    db.集合名.find()

    sort(列:1/-1) 排序

    skip(数字) 跳过指定数量

    limit(数字) 限制查询的条数

    count() 统计查询到的数据的数量

    三、MongoDB聚合查询

    语法:

    db.集合名称.aggregate([ {管道: {表达式}}, ... ])

    常用管道

    $group 将集合中的文档分组,用于统计结果

    $match 过滤数据,只要输出符合条件的文档

    $sort 聚合数据进一步排序

    $skip 跳过指定文档数

    $limit 限制集合数据返回文档数

    常用表达式

    $sum 总和 $sum:1 同count表示统计

    $avg 平均

    $min最小值

    $max 最大值

    demo

    测试数据

    db.c1.insert({_id:1,name:"a",sex:1,age:1})
    db.c1.insert({_id:2,name:"a",sex:1,age:2})
    db.c1.insert({_id:3,name:"b",sex:2,age:3})
    db.c1.insert({_id:4,name:"c",sex:2,age:4})
    db.c1.insert({_id:5,name:"d",sex:2,age:5})

    1)统计男生,女生的总年龄

    db.c1.aggregate([
        {
            $group:{
                _id: "$sex", // _id:分组的字段
                rs: {$sum: "$age"} // rs: 统计后数据的别名
            }
        }
    ])

    2)统计男生,女生的总人数

    db.c1.aggregate([
        {
            $group:{
                _id:"$sex",
                rs:{$sum:1}
            }
        }
    ])

    3) 求学生总数和平均年龄

    db.c1.aggregate([
        {
            $group:{
                _id:null,
                totalNum:{$sum:1},
                avgAge: {$avg:"$age"}
            }
        }
    ])

    4)查询男生,女生人数并升序排列

    db.c1.aggregate([
        {
            $group:{
                _id:"$sex",
                rs:{$sum:1}
            }
        },
        {
            $sort:{rs:1}
        }
    ])
  • 相关阅读:
    设计模式03-工厂方法
    设计模式02-抽象工厂
    设计模式01-什么是设计模式
    工作流activiti-03数据查询(流程定义 流程实例 代办任务) 以及个人小练习
    工作流activiti-02事物控制、流程引擎创建
    工作流activiti-01个人小结
    jQuery.extend 函数详解
    hibernate框架学习之数据查询(QBC)
    hibernate框架学习之多表查询helloworld
    hibernate框架学习之数据查询(HQL)helloworld
  • 原文地址:https://www.cnblogs.com/houchen/p/13946774.html
Copyright © 2011-2022 走看看