格式: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和 skip和limit同时使用, s k i p 放 前 , skip放前, skip放前,limit放后
例:
分组查询
//统计男生和女生的总成绩 $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 });