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.