Utilisez l'autre surcharge d'Aggregate qui prend un paramètre AggregateArgs et vous donne plus de contrôle sur l'opération, y compris la définition de 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();
Notez que le type de retour de cette surcharge d'agrégat est IEnumerable
Juste pour être clair, le Select est exécuté côté client. Vous pourrez peut-être l'organiser de manière à ce que les documents sortant de votre pipeline d'agrégation puissent être directement désérialisés dans des instances de l'une de vos classes.