aggregate 流水线操作

aggregate 流水线操作

db.集合名.aggregate([
{$match:{key:value}},   #筛选条件
{$group:{_id:$分组字段,keyname:{"$sum:1"}}},#keyname指结果中返回的字段
{$project:{key1:value1}},#过滤显示字段或生成新字段
{$sort:{<field>:1}},      #按字段field正序排序
{$limit:{<field>:n}}, #只取结果中的n个
{$skip:{<field>:n}},      #跳过结果中的前n个
{$out:"集合名"},#将结果保存到集合
])
$project中可以使用的操作符:
拼接字段    $concat
大小写转换   $toUpper
转换为字符串  $toString

$group操作符:
$min$max   #最小/最大值
$first$last   #第一个/最后一个
db.集合名.aggregate([
{$bucket:{
groupBy:"$year",#分类字段
boundaries: [2010,2013,2016,2019 ],#分多个桶
output:{       #返回字段
numMovies:{$sum:1},  
avg_Time:{$avg:"$duration"}
}
}
}
])

查找Johnny Depp演的所有电影,按上映年份正序显示年份、演员表、电影名+票房(拼接为一个字符串)

db.movie.aggregate([
 {$match:{actors:"Johnny Depp"}},
 {$project:
{
_id:0,
year:1,
actors:1,
name_gross:{$concat:["$title","is",{$toString:"$gross"}]}
 }
},
 {$sort:{year:1}}
])

在这里插入图片描述

按照导演将所有的电影分类,统计出每个导演的电影评分的平均值,并评分的平均值从高到低进行排序($avg),并将统计结果导出到集合avg中。

db.movie.aggregate([
{$group:{_id:"$director_name",avg_score:{$avg:"$imdb_score"}}},
{$sort:{avg_score:-1}},
{$out:"avg"}
])

在这里插入图片描述

统计2010年后(包含2010),电影的平均时长,每三年一合计。(2010-2013,2013-2016,2016-2019)

db.movie.aggregate([
{$match:{year:{$gte:2010}}},
{$bucket:{
groupBy:"$year",
boundaries: [2010,2013,2016,2019 ],
output:{
numMovies:{$sum:1},
avg_Time:{$avg:"$duration"}
}
}
}
])

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值