MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Come rimuovere le voci duplicate da un array?

A partire da MongoDB 2.2 puoi usare il framework di aggregazione con un $unwind , $group e $project fase per raggiungere questo obiettivo:

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

Nota la necessità del $project per rinominare i favorites campo, poiché $group i campi aggregati non possono essere nidificati.