有人和我在一起我很轻松,我不受欢迎。
我不知道是否需要与小组进行此调整
db.users.aggregate([
{ $match : { '_id': ObjectId('5956a6361b9f673dc629c9a6') } },
{ '$unwind': { 'path': '$profile', 'preserveNullAndEmptyArrays': true } },
{$lookup: {
'from': 'institution',
'localField': 'profile.departament',
'foreignField': 'departament._id',
'as': 'Institution'
}
},
{ '$unwind': { 'path': '$Institution', 'preserveNullAndEmptyArrays': true } },
{$project: {
'Profile':{
'name' : '$name',
'photo': '$photo',
'nickname' : '$nickname',
'institution' : {name: '$Institution.name', photo: '$Institution.photo'},
'departments' : {title : '$Institution.departament.title', category: '$Institution.departament.category'} ,
}
}
},
{ $group : {
'_id' : '$_id',
'profile': { $push : '$Profile' },
}
},
])
我不能做小组'机构'o结果就像这样
"departments" : {
"title" : [
"Terror by africa",
"Africa"
],
"category" : [
"Sub-15",
"Sub-20"
]
}
因为我试图不必使用数组位置
"departments" : {
"title" : [{
name: "Terror by africa",
category: "Sub-15",
},{
name: "Africa",
category: "Sub-20",
}],
}
答案 0 :(得分:1)
您可以删除$group
阶段并更新departments
投影,以使用$map转换密钥。
像
这样的东西{
departments: {
$map: {
input: "$Institution.departament",
as: "departament",
in: {
name: '$$departament.title',
category: '$$departament.category'
}
}
}
}