MongoDB的高级查询 、MongoDB多表关联查询、aggregate聚合管道
一、关系型数据库表(集合)与表(集合)之 间的几种关系
1、一对一的关系
例如:一个人对应一个唯一的身份证号,即为一对一的关系。
2、一对多的关系
例如:一个班级对应多名学生,一个学生只能属于一个班级,即为一对多关系
3、多对多的关系
例如:一个学生可以选多门课程,而同一门课程可以被多个学生选修,彼此的对应关系 即是多对多关系
二、MongoDB 聚合管道(Aggregation Pipeline)
使用聚合管道可以对集合中的文档进行变换和组合。
实际项目:表关联查询、数据的统计
MongoDB 中使用 db.COLLECTION_NAME.aggregate([{<stage>},…]) 方法 来构建和使用聚合管道。先看下官网给的实例,感受一下聚合管道的用法。
三、MongoDB Aggregation 管道操作符与表达式
四、 $project
修改文档的结构,可以用来重命名、增加或删除文档中的字段。
要求查找 order 只返回文档中 trade_no 和 all_price 字段
db.order.aggregate([
{
$project:{
trade_no:1, all_price:1 }
}
])
五、 $match
作用
用于过滤文档。用法类似于 find() 方法中的参数。
db.order.aggregate([
{
$project:{
trade_no:1, all_price:1 }
},
{
$match:{
all_price:{
$gte:90}}
}
])
六、 $group
将集合中的文档进行分组,可用于统计结果。
统计每个订单的订单数量,按照订单号分组
db.order_item.aggregate([
{
$group: {
_id: "$order_id"