У меня есть набор документов в форме:
{
skill_id: 2,
skill_recs: [
{
_id: 4,
member_ids: [1, 4, 5]
}
]
},
{
skill_id: 5,
skill_recs: [
{
_id: 4,
member_ids: [1, 7, 9]
}
]
}
Теперь я хочу объединить набор этих документов так, чтобы skill_recs объединялись с помощью _id, а member_ids всех объединенных документов объединялись в единое объединение значений ...
{ _id: 4,
member_ids: [1, 4, 5, 7, 9]
}
Я получаю большую часть пути с:
db.aggregate([
{
$unwind: '$skill_recs'
},
{
$group: {
_id: '$skill_recs._id',
all_member_ids: {$push: '$skill_recs.member_ids'}
}
},
{
$addFields: {
member_ids: {$setUnion: '$all_member_ids'}
}
}
])
, но $setUnion
не объединяет массив массивов, который он передается.
Вместо этого он производит:
{ _id: 4,
member_ids: [[1, 4, 5], [1, 7, 9]]
}
Каким-либо способом произвести объединение этих массивов?