php mongodb的lookup,通过Aggregate $lookup操作 进行MongoDB的联表查询

Aggregate的 $lookup 和 $match ,可用于MangoDB的联表

直接上代码

两个表介绍

services表

number: 服务号码

flow: 流程名称

flows表

name: 流程名称

config: 流程配置

services表 和 flows 表,通过flow和name关联。

联表查询

想实现查询services表时,关联查询出引用的flow的详细配置,方便前台展示

用的aggrgete的Pipeline参数如下

[

{

'$lookup': {

'from': 'flows',

'localField': 'flow',

'foreignField': 'name',

'as': 'flow_detail'

}

}

]

带上过滤

想实现查询services表的指定service,关联查询出引用的flow的详细配置,方便前台展示

用的aggrgete的Pipeline参数如下

[

{

'$lookup': {

'from': 'flows',

'localField': 'flow',

'foreignField': 'name',

'as': 'flow_content'

}

}, {

'$match': {

'number': '6666'

}

}

]

基于egg-mongo-native编码

最后基于上述pipeline参数实现编码如下

let args = {

pipeline: [

{

'$lookup': {

'from': 'flows',

'localField': 'flow',

'foreignField': 'name',

'as': 'flow_content'

}

}, {

'$match': {

'number': '6666'

}

}

]

}

const result = await this.app.mongo.get('database').aggregate('services', args)

console.log(result)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值