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.