Para imitar a funcionalidade do operador de atualização $addToSet com $each modificador no pipeline de agregação, você pode usar uma combinação de $push no estágio de agrupamento e $reduce + $setUnion no estágio de projeção. Por exemplo.:
db.collection.aggregate([
{$group:{
_id: null,
selectedTags: { $push: '$tags' }
}},
{$project: {
selectedTags: { $reduce: {
input: "$selectedTags",
initialValue: [],
in: {$setUnion : ["$$value", "$$this"]}
}}
}}
])
resultados com um único documento que contém uma lista distinta de tags de todos os documentos em
selectedTags
variedade.