sql >> Databáze >  >> NoSQL >> MongoDB

Jak vrátit hodnoty variant každého produktu, pokud je tento produkt variantou?

Měli byste toho být schopni dosáhnout pomocí $unwind a $group ve vašem agregačním kanálu. To nejprve sloučí každý atribut do jednoho dokumentu a na těch můžete seskupit podle hodnoty atributu.

Nakonec můžete použít $project abyste získali požadovaný název pro attributeValue :

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

Podívejte se na tento zjednodušený příklad na mongoplayground:https://mongoplayground.net/p/VASadZnDedc




  1. Přehled databáze MongoDB Profiler

  2. Načtěte uspořádaný výsledek podle relevance z textového dotazu na kolekci MongoDB pomocí ovladače C#

  3. Express.js – Filtrujte id mongodb v adrese URL

  4. Jak spustit příkaz runCommand s Mongoose?