首页 > 编程语言 > 详细

mongo排序,分页和聚合

时间:2020-11-09 09:39:24      阅读:34      评论:0      收藏:0      [点我收藏+]

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()

技术分享图片


MongoDB分页

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

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

limit 限制查询的数量

练习:

1、降序查询两条数据

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

技术分享图片

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

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

技术分享图片


总结

db.集合名.find()

sort(列:1/-1) 排序

skip(数字) 跳过指定数量

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

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


MongoDB聚合查询

语法:

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

常用管道

技术分享图片

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


常用表达式

$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}
    }
])

mongo排序,分页和聚合

原文:https://www.cnblogs.com/houchen/p/13946774.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!