mongodb查询和聚合函数查询

查询

格式:db.集合名.find()
格式化查询:db.集合名.find().pretty()
db.集合名.findone()只查找一条记录

比较运算符


大于  $gt   小于 $lt   大于等于  $gte   小于等于 $lte   等于  :  不等于  $ne***

条件查询:db.集合名.find({键:“值”})
例:db.student.find({name:“张三”,age:22})
多条件查询 条件1 and 条件2
例:db.student.find({age:{ g t e : 20 , gte:20, gte:20,lte:30}})查询年龄大于等于30和年龄小于等于20的学生

条件1 or 条件2

```powershell
例:db.student.find({$or:[{age:{$lte:18}},{age:{$gte:22}}],sex:"女"})

查询年龄小于等于18岁的学生或者年龄大于等于22岁,性别为女的学生。

**行数查询是:limit()
跳过查询:skip()**
db.集合名.find().limit(行数).skip(行数)   limit指查询多少行就填多少(例:查询11行到20行为10) skip行数指(跳过前多少行)

例:查看student集合中的第21条到30条数据
db.student.find().limit(10).skip(20)

排序:sort(1/-1)1为升序,-1为降序
格式:db.集合的名字.find().sort({键:1或者-1})

## 聚合函数
aggregate()
聚合方法:db.集合名.aggregate([{管道:{几聚合函数表达式}}])

$sum  求和   $avg  求平均值   $max  求最大值   $min 求最小值

管道操作符
$project  修改文档的结构
$match  条件的声明
$group  分组统计
$limit  行数限定
$skip  跳过记录
$sort  排序

********$skip和$limit同时使用,$skip放前,$limit放后********
例:
**分组查询**
```powershell
//统计男生和女生的总成绩    $sum    $group sex
db.student.aggregate([{$group:{_id:"$sex",he:{$sum:"grade"}}}])

//统计一下平均分,最高分,最低分

db.student.aggregate([{$group:{_id:null,fenshu:{$avg:"grade"}}}])
db.student.aggregate([{$group:{_id:null,fenshu:{$max:"$grade"}}}])
db.student.aggregate([{$group:{_id:null,fenshu:{$min:"$grade"}}}])

//统计男生和女生的平均分各是多少?

db.student.aggregate([{$group:{_id:"$sex",fenshu:{$avg:"$grade"}}}])

// 统计男生和女生各有多少人

count(*)=$sum:1 
db.student.aggregate([{$group:{_id:"$sex",renshu:{$sum:1}}}])

//求学生的总数和平均分

$sum:1  $avg
db.student.aggregate([{$group:{_id:null,zongshu:{$sum:1},pingjun:{$avg:"$grade"}}}])

//查询男生和女生的人数,按人数升序排列

总人数$sum:1  分组:$group 性别   排序:$sort:1  -1
db.student.aggregate([{$group:{_id:s$ex,renshu:{$sum:1}}},{$sort:{renshu:1}}])

//查看年龄大于等于20,只看两条记录

 age:{$gte:20}   从第二条数据开始查看
 db.student.aggregate([{$match:{age:{$gte:20}}},{$skip:1},{$limit:2}])
 //$skip$limit同时使用,$skip放前

函数条件查询


//查看男生的最高成绩  $group $max   条件:只看男生  $match
db.student.aggregate([{$match:{sex:"男"}},{$group:{_id:"$sex",chengji:{$max:"$grade"}}}])

//1)$project实例:修改文档结构,只含有_id,name和age三个字段。
db.student.aggregate([{$project:{name:1,age:1}}])

//2)$match实例:获取分数大于70小于或等于90记录
db.student.aggregate( [{ $match : { grade : { $gt : 70, $lte : 90 } } }, { $group: { _id: null, count: { $sum: 1 } } }] );

//3)$skip实例:前五个文档"过滤"掉。
db.student.aggregate(  { $skip : 5 });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王大兴的王兴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值