MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Agrégat MongoDB, comment addToSet chaque élément du tableau dans le pipeline de groupe

Pour imiter la fonctionnalité de l'opérateur de mise à jour $addToSet avec $each modificateur dans le pipeline d'agrégation, vous pouvez utiliser une combinaison de $push à l'étape de regroupement et de $reduce + $setUnion à l'étape de projection. Ex. :

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

résultats avec un seul document qui contient une liste distincte de balises de tous les documents dans selectedTags déployer.