Para imitar la funcionalidad del operador de actualización $addToSet con $cada modificador en la tubería de agregación, puede usar una combinación de $push en la etapa de agrupación y $reduce + $setUnion en la etapa de proyección. Por ejemplo:
db.collection.aggregate([
{$group:{
_id: null,
selectedTags: { $push: '$tags' }
}},
{$project: {
selectedTags: { $reduce: {
input: "$selectedTags",
initialValue: [],
in: {$setUnion : ["$$value", "$$this"]}
}}
}}
])
resultados con un solo documento que contiene una lista distinta de etiquetas de todos los documentos en selectedTags
formación.