我需要将mongo集合分组并聚合。
示例集合
[{id:“1”,技能:“烹饪”},{id:“1”,技能:“钓鱼”}]
Lookup Collection
[{name:“cooking”,value:3},{name:“fishing”,value:2}]
期望的结果
[{id:“1”,技能:[{值:3,“烹饪”},{值:2,“钓鱼”}]}]
这是我的目标。
db.talent.aggregate([
{
$group: '$id'
skills: { $addToSet: '$skill' }
},
])
结果:
[{id:“1”,技能:[“烹饪”,“钓鱼”]}]
我想知道这是否可行。
我想念SQL,需要帮助!
答案 0 :(得分:1)
我们可以使用$lookup管道中的$group,$project和aggregation来执行此操作
下面显示的是mongodb shell查询
db.example_collection.aggregate([
{
$lookup: {
from: "lookup_collection",
localField: "skill",
foreignField: "name",
as: "skills"
}
},
{
$group: {
_id: "$id",
skills: {
$push: "$skills"
}
}
},
{
$project: {
"id": "$_id",
"skills.name": 1,
"skills.value": 1,
"_id": 0
}
}
])