• 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}
        }
    ])
  • 相关阅读:
    深圳中学校长推荐上北大 7尖子现场决出3名额
    到处Excel的数据格式设置
    转:乔布斯留给我们的十条经验
    GridView中DataFormatString属性的取值
    开发Windows服务的示例
    关于页面验证问题
    window.showModalDialog()弹出窗口获取返回值
    sql server 2000 MMC不能打开的处理方法
    基于微软平台IIS/ASP.NET开发的大型网站有哪些?
    开源相关社区/项目一览(备查,欢迎补充)
  • 原文地址:https://www.cnblogs.com/houchen/p/13946774.html
Copyright © 2020-2023  润新知