Um die Funktionalität des $addToSet-Aktualisierungsoperators mit dem $each-Modifikator in der Aggregationspipeline nachzuahmen, können Sie eine Kombination aus $push in der Gruppierungsphase und $reduce + $setUnion in der Projektionsphase verwenden. Beispiel:
db.collection.aggregate([
{$group:{
_id: null,
selectedTags: { $push: '$tags' }
}},
{$project: {
selectedTags: { $reduce: {
input: "$selectedTags",
initialValue: [],
in: {$setUnion : ["$$value", "$$this"]}
}}
}}
])
Ergebnisse mit einem einzigen Dokument, das eine eindeutige Liste von Tags aus allen Dokumenten in selectedTags
enthält Reihe.