$unwind
を使用してこれを達成できるはずです および$group
集約パイプラインで。これにより、最初に各属性が1つのドキュメントにフラット化され、属性値でグループ化できます。
最後に、$project
を使用できます attributeValue
の目的の名前を取得します :
db.collection.aggregate([
{
$unwind: "$attributeSet"
},
{
$group: {
_id: "$attributeSet.value",
data: {
"$addToSet": {
productId: "$productId"
}
}
}
},
{
"$project": {
_id: 0,
data: 1,
attributeValue: "$_id"
}
}
])
mongoplaygroundで次の簡単な例を参照してください: https://mongoplayground.net/p/VASadZnDedc