Usa l'altro overload di Aggregate che accetta un parametro AggregateArgs e ti offre un maggiore controllo sull'operazione, inclusa l'impostazione di AllowDiskUse:
var pipeline = new BsonDocument[0]; // replace with a real pipeline
var aggregateArgs = new AggregateArgs { AllowDiskUse = true, Pipeline = pipeline };
var aggregateResult = collection.Aggregate(aggregateArgs);
var users = aggregateResult.Select(x =>
new User
{
Influence = x["Influence"].ToDouble(),
User = new SMBUser(x["user"].AsBsonDocument)
}).ToList();
Si noti che il tipo restituito di questo overload di Aggregate è IEnumerable
Giusto per essere chiari, il Select viene eseguito lato client. Potresti essere in grado di fare in modo che i documenti che escono dalla tua pipeline di aggregazione possano essere deserializzati direttamente nelle istanze di una delle tue classi.