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.