Để bắt chước chức năng của toán tử cập nhật $ addToSet với $ mỗi công cụ sửa đổi trong đường dẫn tổng hợp, bạn có thể sử dụng kết hợp $ push ở giai đoạn nhóm và $ Reduce + $ setUnion trên giai đoạn chiếu. Ví dụ:
db.collection.aggregate([
{$group:{
_id: null,
selectedTags: { $push: '$tags' }
}},
{$project: {
selectedTags: { $reduce: {
input: "$selectedTags",
initialValue: [],
in: {$setUnion : ["$$value", "$$this"]}
}}
}}
])
kết quả với một tài liệu duy nhất chứa danh sách các thẻ khác biệt với tất cả các tài liệu trong selectedTags
mảng.