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 });
			          