php mongodb lookup,mongodb-在$lookup管道中使用$match$进行聚合

如果我有以下对象

obj

:

{

"abc1": "xyz1",

"abc2": "xyz2",

"abc3": "xyz3"

}

我想做一个聚合,比如:

db.collection.aggregate([

{

"$match": {

"_id": {

$in:

Object.keys(obj)

}

}

},

{

"$lookup": {

"from": "subdocument",

"pipeline": [

{

"$match": {

"_id": ObjectId(matching_value)

}

},

],

"as": "subdocument"

}

},

{ "$unwind": "$subdocument" }

])

我怎么得到

$lookup

要匹配对象键以匹配对象值的管道?有可能吗?

所以这是一个单一的数据库调用版本:

let obj = {

"abc1": "xyz1",

"abc2": "xyz2",

"abc3": "xyz3"

}

for (let key in obj)

{

db.collection.aggregate([

{

"$match": {

"_id":

ObjectId(key)

}

},

{

"$lookup": {

"from": "subdocument",

"pipeline": [

{

"$match": {

"_id": ObjectId(obj[key])

}

},

],

"as": "subdocument"

}

},

{ "$unwind": "$subdocument" }

])

}

示例集合

db.maindocuments

[

{

_id: "abc1",

data: "data"

},

{

_id: "abc2",

data: "data"

},

{

_id: "abc3",

data: "data"

}

]

db.subdocuments

[

{

_id: "xyz1",

data: "data"

},

{

_id: "xyz2",

data: "data"

},

{

_id: "xyz3",

data: "data"

}

]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值