От MongoDB 2.2 можете да използвате рамката за агрегиране с $unwind
, $group
и $project
етап за постигане на това:
db.users.aggregate([{$unwind: '$favorites.books'},
{$group: {_id: '$_id',
books: {$addToSet: '$favorites.books'},
name: {$first: '$name'}}},
{$project: {'favorites.books': '$books', name: '$name'}}
])
Обърнете внимание на необходимостта от $project
за да преименувате favorites
поле, тъй като $group
обобщените полета не могат да бъдат вложени.