Począwszy od mongoengine v0.9 (która jest obecnie w fazie rozwoju), będziesz mógł używać aggregate() , jak sugerowałeś:https://docs.mongoengine.org/ apireference.html#mongoengine.queryset.QuerySet.aggregate
Do tego czasu musisz polegać na pymongo :Zapytanie agregujące Flask-MongoEngine i PyMongo