MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Wie werden die Variantenwerte jedes Produkts zurückgegeben, wenn dieses Produkt eine Variante ist?

Sie sollten dies mit $unwind erreichen können und $group in Ihrer Aggregationspipeline. Dadurch wird jedes Attribut zunächst zu einem einzelnen Dokument zusammengefasst, und in diesen können Sie nach dem Attributwert gruppieren.

Schließlich können Sie $project verwenden um den gewünschten Namen für attributeValue zu erhalten :

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

Sehen Sie sich dieses vereinfachte Beispiel auf mongoplayground an:https://mongoplayground.net/p/VASadZnDedc