Depuis MongoDB 2.2, vous pouvez utiliser le framework d'agrégation avec un $unwind
, $group
et $project
étape pour y parvenir :
db.users.aggregate([{$unwind: '$favorites.books'},
{$group: {_id: '$_id',
books: {$addToSet: '$favorites.books'},
name: {$first: '$name'}}},
{$project: {'favorites.books': '$books', name: '$name'}}
])
Notez la nécessité du $project
pour renommer les favorites
champ, puisque $group
les champs agrégés ne peuvent pas être imbriqués.