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

Como remover entradas duplicadas de uma matriz?


A partir do MongoDB 2.2, você pode usar a estrutura de agregação com um $unwind , $group e $project etapa para conseguir isso:
db.users.aggregate([{$unwind: '$favorites.books'},
                    {$group: {_id: '$_id',
                              books: {$addToSet: '$favorites.books'},
                              name: {$first: '$name'}}},
                    {$project: {'favorites.books': '$books', name: '$name'}}
                   ])

Observe a necessidade do $project para renomear os favorites campo, pois $group campos agregados não podem ser aninhados.