我正在尝试构建一个管道,根据特定的条件搜索文档,并分组某些字段以获得所需的输出。 deals
的文档结构如下:
{
"_id":"123",
"status":"New",
"deal_amount":"5200",
"deal_date":"2018-03-05",
"data_source":"API",
"deal_type":"New Business",
"account_id":"A1"
},
{
"_id":"456",
"status":"New",
"deal_amount":"770",
"deal_date":"2018-02-11",
"data_source":"API",
"deal_type":"New Business",
"account_id":"A2"
},
{
"_id":"885",
"status":"Old",
"deal_amount":"4070",
"deal_date":"2017-09-22",
"data_source":"API",
"deal_type":"New Business",
"account_id":"A2"
},
账户名称是一个被引用的字段。账户文档如下:
{
"_id":"A1",
"name":"Sarah",
},
{
"_id":"A2",
"name":"Amber",
},
该管道应搜索“状态”为“新”的文档,且“交易金额”大于2000,并按“账户名称”分组。我使用的管道如下:
db.deal.aggregate([{
$match: {
status: New,
deal_amount: {
$gte: 2000,
}
}
}, {
$group: {
_id: "$account_name",
}
},{
$lookup:{
from:"accounts",
localField:"account_id",
foreignField:"_id",
as:"acc",
}
}
])
我希望结果中只显示交易金额、交易类型、交易日期和账户名称。
期望结果:
{
"_id": "123",
"deal_amount": "5200",
"deal_date": "2018-03-05",
"deal_type": "New Business",
"account_name": "Sarah"
}, {
"_id": "885",
"deal_amount": "4070",
"deal_date": "2017-09-22",
"deal_type": "New Business",
"account_name": "Amber"
},
我需要在“分组”阶段包含所有这些字段:deal_amount,deal_type,deal_date和account name,才能在结果中显示吗?还是有其他方法可以做到。任何帮助都将不胜感激。