如何在MongoDB中使用连接查询检索元素?

如何在MongoDB中使用连接查询检索元素?,mongodb,aggregation-framework,Mongodb,Aggregation Framework,我对使用$graphLookUp和$map的sum detailed join有一个问题,但是项检索双数组:S,有没有一种方法可以将元素分组到sum中 这是我收藏的一个例子: /*1*/ { “类型”:“Fase1”, “总数”:100, “钥匙”:“A6E19D93-8546-4A3A-8887-E23C301A290F”, }, /* 2 */ { “类型”:“Fase1”, “总计”:340.80, “密钥”:“85547A5B-623B-4408-9B3E-26F9B368B2C7” }

我对使用
$graphLookUp
$map
的sum detailed join有一个问题,但是项检索双数组:S,有没有一种方法可以将元素分组到sum中

这是我收藏的一个例子:

/*1*/
{
“类型”:“Fase1”,
“总数”:100,
“钥匙”:“A6E19D93-8546-4A3A-8887-E23C301A290F”,
},
/* 2 */
{
“类型”:“Fase1”,
“总计”:340.80,
“密钥”:“85547A5B-623B-4408-9B3E-26F9B368B2C7”
},
/* 3 */
{
“类型”:“Fase2”,
“键”:“F6307773-A6EF-41D4-A2F3-0FE55543846E”
“补充”:{
“付款”:[
{
“金额”:20,
“相关文件”:[
{
“密钥ID”:“85547A5B-623B-4408-9B3E-26F9B368B2C7”,
}
]
},
{
“金额”:15,
“相关文件”:[
{
“密钥ID”:“85547A5B-623B-4408-9B3E-26F9B368B2C7”,
}
]
}
],
},
}
我需要在一个列表中获取信息,其类型为
Phase2

/*1*/
{
“类型”:“Fase1”,
“总数”:100,
“钥匙”:“A6E19D93-8546-4A3A-8887-E23C301A290F”,
},
/* 2 */
{
“类型”:“Fase1”,
“总计”:340.80,
“密钥”:“85547A5B-623B-4408-9B3E-26F9B368B2C7”,
//与keyId相关的和为20+35
“totalFase2”:35
}
这是我的示例代码,我对1列中的总和数据感到困惑:

query=[
{
$match:{
类型:“Fase1”,
},
}, {
$graphLookup:{
来自:“发票”,
startWith:“$key”,
connectFromField:'键',
connectToField:“补足.付款.文档相关.密钥ID”,
如:‘付款’,
限制搜索与匹配:{
'type':'Fase2',
},
},
},
{
$项目:{
_id:1,
类型:1,
总数:1,
paymentData:“$payments.complete.payments”
},
},
];
db.getCollection(“发票”).aggregate(查询);

尝试
$map
迭代
支付.补足.支付.金额
金额数组,
$sum
金额数组,
$map
将再次返回数字数组
$sum
金额数组

  {
    $project: {
      _id: 1,
      type: 1,
      total: 1,
      totalFase2: {
        $sum: {
          $map: {
            input: "$payments.complement.payments.amount",
            in: { $sum: "$$this" }
          }
        }
      }
    }
  }

到目前为止,您尝试了什么?你能分享你的代码吗?在提供的答案中是否有你认为不能解决你问题的东西?如果是,请对答案进行评论,以澄清哪些问题需要解决,哪些问题尚未解决。如果它确实回答了您提出的问题,那么请注意您提出的问题