sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB-aggregat, hur man addToSet varje element av array i grupppipeline

För att efterlikna funktionen hos $addToSet-uppdateringsoperatören med $each modifier i aggregeringspipeline kan du använda en kombination av $push på grupperingsstadiet och $reduce + $setUnion på projektionsstadiet. T.ex.:

db.collection.aggregate([
    {$group:{
       _id: null,
       selectedTags: { $push: '$tags' }      
    }},
    {$project: {
        selectedTags: { $reduce: {
            input: "$selectedTags",
            initialValue: [],
            in: {$setUnion : ["$$value", "$$this"]}
        }}
    }}
])

resultat med ett enda dokument som innehåller en distinkt lista med taggar från alla dokument i selectedTags array.



  1. Redis Cluster - produktionsklar?

  2. Redis med Resque och Rails:ERR-kommando tillåts inte när minne> 'maxmemory' används

  3. Hur definierar jag metoder i en Mongoose-modell?

  4. Mongoose &unikt fält