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

¿Cómo eliminar entradas duplicadas de una matriz?

A partir de MongoDB 2.2, puede usar el marco de agregación con un $unwind , $group y $project etapa para lograr esto:

db.users.aggregate([{$unwind: '$favorites.books'},
                    {$group: {_id: '$_id',
                              books: {$addToSet: '$favorites.books'},
                              name: {$first: '$name'}}},
                    {$project: {'favorites.books': '$books', name: '$name'}}
                   ])

Tenga en cuenta la necesidad del $project para cambiar el nombre de los favorites campo, ya que $group los campos agregados no se pueden anidar.