合并数组元素并对Mongodb聚合进行重复数据消除



我有下面两个关于集合的文档。我需要按经理级别分组的输出,以及在他的团队下分配的项目列表。

输入

{ 
"emp" : "emp1", 
"itemList" : [
"item1", 
"item2", 
"item3", 
"item4"
], 
"reportingTo" : "manager1"
}
{ 
"emp" : "emp2", 
"itemList" : [
"item5", 
"item2", 
"item3", 
"item4"
], 
"reportingTo" : "manager1"
}

输出:

{
"reportingTo":"manager1",
"itemList" : [
"item1", 
"item2", 
"item3", 
"item4",
"item5"
]
}

您可以使用以下聚合

db.collection.aggregate([
{ "$group": {
"_id": "$reportingTo",
"itemList": {
"$addToSet": "$itemList"
}
}},
{ "$project": {
"reportingTo": "$_id",
"itemList": {
"$reduce": {
"input": "$itemList",
"initialValue": [],
"in": { "$setUnion": ["$$this", "$$value"] }
}
}
}}
])

最新更新