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

Aggregato MongoDB, come addToSet ogni elemento dell'array nella pipeline di gruppo

Per simulare la funzionalità dell'operatore di aggiornamento $addToSet con $ogni modificatore nella pipeline di aggregazione è possibile utilizzare una combinazione di $push nella fase di raggruppamento e $reduce + $setUnion nella fase di proiezione. Es.:

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

risultati con un unico documento che contiene un elenco distinto di tag da tutti i documenti in selectedTags Vettore.