聚合查询
// 语法
db.集合名.aggregate([
{管道: {表达式}}
])
//示例
db.user.aggregate([
{
$group: {
_id: '$sex', // null 表示不分组
sum: {$sum: '$age'} // 1表示统计数量count
}
},
{
$sort: {sum: -1} // 按求和降序
}
])
// 语法
db.集合名.aggregate([
{管道: {表达式}}
])
//示例
db.user.aggregate([
{
$group: {
_id: '$sex', // null 表示不分组
sum: {$sum: '$age'} // 1表示统计数量count
}
},
{
$sort: {sum: -1} // 按求和降序
}
])
常用管道
- $group 将集合中的文档分组,用于统计结果
- $match 过滤数据,只输出符合条件的文档
- $sort 聚合后进一步排序
- $skip 聚合后进一步跳过文档数
- $limit 聚合后进一步限制条数
- $project 增加、删除、重命名字段、筛选指定字段
- $lookup 引用其他集合的数据
// $lookup语法
db.order.aggregate([
{
$lookup: {
from: 'order_item', // 关联的表名
localFieId: 'order_id', // 关联的字段(主表)
foreignFieId: 'order_id', // 关联的字段(关联表)
as: 'items' // 关联后数据放到这个字段
}
}
])
// $lookup语法
db.order.aggregate([
{
$lookup: {
from: 'order_item', // 关联的表名
localFieId: 'order_id', // 关联的字段(主表)
foreignFieId: 'order_id', // 关联的字段(关联表)
as: 'items' // 关联后数据放到这个字段
}
}
])
常用表达式
- $sum 求和 $sum:1同count表示统计
- $avg 求平均
- $min 最小值
- $max 最大值