数据库中表与表之间的关系
1、一对一
2、一对多
3、多对多
Mongodb聚合管道
管道操作 | 描述 |
---|---|
$project | 增加、删除、重命名字段,控制显示的数量 |
$match | 条件匹配、满足条件才能进入下一阶段 |
$limit | 限制结果的数量 |
$skip | 跳过文档的数量 |
$sort | 条件排序 |
$group | 条件组合结果、统计 |
$lookup | 用于引入其他集合的数据(表关联查询) |
//只显示order_id、all_price这两列
db.order.aggregate([
{
$project:{order_id:1,all_price:1}
}
])
//查找价格大于或等于90的商品
db.order.aggregate([
{
$project:{order_id:1,all_price:1}
},
{
$match:{"all_price":{$gte:90}}
}
])
//分组并把价格求和
db.order_item.aggregate([
{
$group:{id:"$order_id",total:{$sum:"$price"}}
}
])
//查找价格大于或等于90的商品、并降序排序
db.order.aggregate([
{
$project:{order_id:1,all_price:1}
},
{
$match:{"all_price":{$gte:90}}
},
{
$sort:{"all_price":-1}
},
//只显示一条数据
{
$limit:1
}
])
//查找价格大于或等于90的商品、并降序排序
db.order.aggregate([
{
$project:{order_id:1,all_price:1}
},
{
$match:{"all_price":{$gte:90}}
},
{
$sort:{"all_price":-1}
},
//跳过第一条数据
{
$skip:1
}
])
表的关联查询
db.order.aggregate([
{
$lookup:
{
form:"order_item",
localField:"order_id",
foreignField:"order_id",
as:"items"
}
}
])