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 });
经验分享 程序员 微信小程序 职场和发展