MongoDB aggregate $addFields with condition



这是第二次在这里问我的问题。如果出了什么差错,我很抱歉。

我是mongodb的新手,我想使用provider_id, tanant_id聚合2个集合。

"provider_tenants": [
{
"provider_id": "63579dd4539180517fd51d71",
"tenants": [
{
"_id": "6364da3dc6cded87a8d74086",
"tenant_id": "636485fa84eedd81331c60e6"
}
],
"_id": "6364da3dc6cded87a8d74085"
},
{
"provider_id": "6364871d84eedd81331c60eb",
"tenants": [
{
"_id": "636b77aca99eaad39c86bd71",
"tenant_id": "6364872d84eedd81331c60ec",
}
],
"_id": "636b7765a99eaad39c86bd6f"
}
],
"details_provider": [
{
"_id": "63579dd4539180517fd51d71",
"name": "details_aaaaaa",
"tenants": [
{
"name": "xxxxx",
"_id": "636485fa84eedd81331c60e6"
},
{
"name": "zzzzz",
"_id": "6364860684eedd81331c60e7"
}
]
},
{
"_id": "6364871d84eedd81331c60eb",
"name": "details_bbbbbb",
"tenants": [
{
"name": "yyyyy",
"_id": "6364872d84eedd81331c60ec"
}
]
}
]

我想要这样的结果字段输入时,provider_id, tenant_id有一个匹配值与details_provider

"provider_tenants": [
{
"provider_id": "63579dd4539180517fd51d71",
"name": "details_aaaaaa",
"tenants": [
{
"name": "xxxxx",
"tenant_id": "636485fa84eedd81331c60e6",
"_id": "6364da3dc6cded87a8d74086"
}
],
"_id": "6364da3dc6cded87a8d74085"
},
{
"provider_id": "6364871d84eedd81331c60eb",
"name": "details_bbbbbb",
"tenants": [
{
"name": "yyyyy",
"tenant_id": "6364872d84eedd81331c60ec",
"_id": "636b77aca99eaad39c86bd71"
}
],
"_id": "636b7765a99eaad39c86bd6f"
}

对不起我的英语^^

我觉得应该是这个:

db.provider_tenants.aggregate([
{
$lookup: {
from: "details_provider",
localField: "provider_id",
foreignField: "_id",
as: "details"
}
},
{
$set: {
name: { $first: "$details.name" },
details: "$$REMOVE"
}
}
])

Mongo操场

最新更新