Use a outra sobrecarga de Aggregate que usa um parâmetro AggregateArgs e oferece mais controle sobre a operação, incluindo a configuração 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();
Observe que o tipo de retorno dessa sobrecarga de Aggregate é IEnumerable
Só para ficar claro, o Select está sendo executado do lado do cliente. Você pode organizá-lo para que os documentos que saem do pipeline de agregação possam ser desserializados diretamente em instâncias de uma de suas classes.