在我的 MongoDB/Node 后端,我正在使用 Studio 3T 创建一个视图,以从集合中返回一些数据子集。我也在做一个$lookup
从第二个集合中引入一些数据,并将其注入到 mongoID 通常作为对另一个集合的引用出现的位置。
然后我用$project
它来塑造数据的显示方式。
这是我最初的$project
样子,这是我管道的第 1 阶段:
{ "name" : 1.0, "dob" : 1.0, "coverage" : 1.0, "payer" : 1.0 }
对于第 2 阶段,我正在做 my $lookup
,如下所示:
{ "from" : "payers", "localField" : "coverage.payer", "foreignField" : "_id", "as" : "payerInfo" }
最后,我通过如下步骤来塑造数据的外观:
"coverage" : { "payer" : { "id" : "$payerInfo._id", "name" : "$payerInfo.name" }
我遇到的问题是,例如,如果“覆盖”——来自主集合——在数组中有多个对象,那么相同的“付款人”信息——来自辅助集合- 正在为其中的每一个而投入使用。所以基本上索引是关闭的。覆盖数组中的每个对象都应该有不同的 payerId 和 payerName。
我可以运行什么操作来确保正确对应的付款人信息(通过 $lookup 从第二个集合中提取)被放入“coverage”数组中的适当对象中?
下面是输出数据的样子(正如我所说,这是不正确的。现在,相同的付款人信息被添加到“coverage”数组中的两个对象中,而这些对象应该不同)。
"coverage": [
{
"payer": {
"id": [
"12345"
],
"name": [
{
"long": "National United",
"short": "NU"
}
]
},
"field2": value,
"field3": value,
"field4": value,
},
{
"payer": {
"id": [
"12345"
],
"name": [
{
"long": "National United",
"short": "NU"
}
]
},
"field2": value,
"field3": value,
"field4": value,
}
]
我可以向视图管道添加哪些额外的操作来解决这个问题?