Huvudproblemet är att du måste gå igenom hela samlingen (i den här situationen kan du inte använda indexen för att påskynda processen).
Du kan prova den här koden (den har mindre funktion än din):
db.getCollection('User').aggregate([
{
$unwind: "$UserSubscriptions"
},
{
$group: {
_id:"$UserSubscriptions.Subscription.Publication.Code",
users: {$addToSet: "$_id"}
}
},
{
$project: {"PublicationCode": "$_id", "Count": {$size: "$users"}}
}
])