Użyj drugiego przeciążenia Aggregate, które pobiera parametr AggregateArgs i zapewnia większą kontrolę nad operacją, w tym ustawienie 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();
Zauważ, że zwracanym typem tego przeciążenia Aggregate jest IEnumerable
Żeby było jasne, Select jest wykonywany po stronie klienta. Możesz być w stanie zorganizować to tak, aby dokumenty wychodzące z potoku agregacji mogły być bezpośrednio zdeserializowane do instancji jednej z twoich klas.