一 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()
语法:
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)
2、降序查询 跳过两条并查询两条
db.c1.find().sort({age:-1}).skip(2).limit(2)
总结
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} } ])