MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Agregado do MongoDB, como addToSet cada elemento da matriz no pipeline do grupo


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.