Kể từ MongoDB 2.2, bạn có thể sử dụng khung tổng hợp với $unwind
, $group
và $project
giai đoạn để đạt được điều này:
db.users.aggregate([{$unwind: '$favorites.books'},
{$group: {_id: '$_id',
books: {$addToSet: '$favorites.books'},
name: {$first: '$name'}}},
{$project: {'favorites.books': '$books', name: '$name'}}
])
Lưu ý sự cần thiết của $project
để đổi tên favorites
trường, kể từ $group
các trường tổng hợp không được lồng vào nhau.