sql >> Base de Datos >  >> NoSQL >> MongoDB

Agregado de MongoDB, cómo agregarToSet cada elemento de la matriz en la tubería de grupo

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.