sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Cómo devolver los valores de variante de cada producto si ese producto es una variante?

Debería poder lograr esto usando $unwind y $group en su tubería de agregación. Esto primero aplana cada atributo en un solo documento y en aquellos que puede agrupar por el valor del atributo.

Finalmente, puedes usar $project para obtener el nombre deseado para attributeValue :

db.collection.aggregate([
  {
    $unwind: "$attributeSet"
  },
  {
    $group: {
      _id: "$attributeSet.value",
      data: {
        "$addToSet": {
          productId: "$productId"
        }
      }
    }
  },
  {
    "$project": {
      _id: 0,
      data: 1,
      attributeValue: "$_id"
    }
  }
])

Vea este ejemplo simplificado en mongoplayground:https://mongoplayground.net/p/VASadZnDedc