MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come restituire i valori delle varianti di ciascun prodotto se quel prodotto è una variante?

Dovresti riuscire a farlo usando $unwind e $group nella tua pipeline di aggregazione. Questo prima appiattisce ogni attributo in un unico documento e su quelli puoi raggruppare in base al valore dell'attributo.

Infine, puoi usare $project per ottenere il nome desiderato per attributeValue :

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

Guarda questo esempio semplificato su mongoplayground:https://mongoplayground.net/p/VASadZnDedc