Vấn đề chính là bạn cần phải xem qua toàn bộ bộ sưu tập (trong trường hợp này, bạn không thể sử dụng các chỉ mục để tăng tốc quá trình).
Bạn có thể thử mã này (nó có ít thao tác hơn so với của bạn):
db.getCollection('User').aggregate([
{
$unwind: "$UserSubscriptions"
},
{
$group: {
_id:"$UserSubscriptions.Subscription.Publication.Code",
users: {$addToSet: "$_id"}
}
},
{
$project: {"PublicationCode": "$_id", "Count": {$size: "$users"}}
}
])