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

例: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 排序

s k i p 和 skip和 skiplimit同时使用, s k i p 放 前 , skip放前, skiplimit放后
例:
分组查询

//统计男生和女生的总成绩    $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 });

你可能感兴趣的:(Mongodb数据库)