Använd den andra överbelastningen av Aggregate som tar en AggregateArgs-parameter och ger dig mer kontroll över operationen, inklusive inställning av 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();
Observera att returtypen för denna överbelastning av Aggregate är IEnumerable
Bara för att vara tydlig, Select exekveras på klientsidan. Du kanske kan ordna det så att dokumenten som kommer ut från din aggregeringspipeline direkt kan deserialiseras till instanser av en av dina klasser.