How to revert the $ unwind operation in MongoDB 3.4?

1

Imagine a product collection:

db.produtos.find()
[
  {
    _id: "produto01",
    cores: ["preto", "branco", "ouro"]
  },
  {
    _id: "produto02",
    cores: ["branco", "ouro"]
  }
]

Each product has a field called colors, which is a list of strings. Using $unwind in the color field results in the following:

db.produtos.aggregate([ { $unwind: "$cores" } ])
[
  {
    _id: "produto01",
    cores: "preto"
  },
  {
    _id: "produto01",
    cores: "branco"
  },
  {
    _id: "produto01",
    cores: "ouro"
  },
  {
    _id: "produto02",
    cores: "branco"
  },
  {
    _id: "produto02",
    cores: "ouro"
  }
]

How do you reverse this operation? That is, go from the above result back to the original, after doing $unwind ?

    
asked by anonymous 27.12.2017 / 00:22

1 answer

1

Using $ group with # will regroup the array to the object, like this:

db.produtos.aggregate([{
        $unwind: "$cores"
    },
    {
        "$group": {
            "_id": "$_id",
            "cores": {
                $push: "$cores"
            }
        }
    }
])
    
27.12.2017 / 13:33