MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

MongoDB-Aggregat, wie man jedes Element des Arrays in der Gruppenpipeline addToSet hinzufügt

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.