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