[TOC]
### mongoose 关联查询
* [ ] 一对多
比如订单表,一个订单对应多个商品,订单和商品属于一对多
~~~
async getOrder() {
return await this.ctx.model.Order.aggregate([
{
$lookup: {
from: 'order_item',
localField: 'order_id',
foreignField: 'order_id',
as: 'items'
}
}
])
}
~~~
>[info] $lookup 主表关联
> from 关联子表
> localField 主表id ( 与子表关联的字段 )
> foreignField 关联外键 (子表和主表关联的字段)
> as 关联字段
~~~
[
{
"_id": "5d209e01e9d8ac37a0976bfd",
"order_id": "1",
"uid": "10",
"trade": "111",
"all_price": "100",
"all_num": "2",
"status": "0",
"items": [
{
"_id": "5d209e33e9d8ac37a0976bfe",
"order_id": "1",
"title": "鼠标",
"price": "60",
"num": "1"
},
{
"_id": "5d209e4fe9d8ac37a0976bff",
"order_id": "1",
"title": "键盘",
"price": "90",
"num": "16"
},
{
"_id": "5d209e63e9d8ac37a0976c00",
"order_id": "1",
"title": "液晶屏幕",
"price": "160",
"num": "90"
}
]
}
]
~~~
- 序言
- ES6模块化
- node基础
- FS模块
- 常用变量
- crypto加密
- 基础
- 安装
- 中间件
- 架构
- 结构分层
- 配置
- 路由
- 安装路由
- 自动加载
- 获取参数
- 路由前缀
- 路由中间件
- 控制器
- 请求
- 请求信息
- 数据库
- mongoDB
- mongoDB原生语句
- mongoDB数据库角色
- mongoose连接数据库
- 自动记录时间戳
- 模型
- mongoose模型
- 定义
- 模型初始化
- 查询
- 新增
- 更新
- 删除
- 隐藏字段
- 模式
- 关联查询
- 复杂模型
- 仿知乎个人资料建模
- 关注与粉丝
- 视图
- 模板
- edge
- 日志
- 错误和调试
- 调试当前文件
- nodemon调试
- 异常处理
- Koa2错误处理
- 验证
- Koa验证器
- async-validator
- installation
- 安全
- 数据加密
- 杂项
- jwt
- koa-jwt
- env环境变量配置
- 上传
- 分页和模糊搜索
- 扩展
- nodemon
- bodyparser
- koaJsonError
- cross-env
- uuid生成唯一ID
- pope字符串模板引擎
- 命令行
- 部署
- 附录
- RESTfulApi
- Http动词
- 状态码
- 调用频率限制
- 按需查询字段
- restful分页