A partir do mongoengine v0.9 (que está atualmente em desenvolvimento), você poderá usar
aggregate() , como você sugeriu:https://docs.mongoengine.org/ apireference.html#mongoengine.queryset.QuerySet.aggregate
Até lá, você precisa confiar no
pymongo :Consulta de agregação Flask-MongoEngine e PyMongo