Използвайте другото претоварване на Aggregate, което приема параметър AggregateArgs и ви дава повече контрол върху операцията, включително настройване на 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();
Имайте предвид, че типът връщане на това претоварване на Aggregate е IEnumerable
Само за да бъде ясно, Select се изпълнява от страна на клиента. Може да успеете да го подредите така, че документите, излизащи от вашия конвейер за агрегиране, да могат директно да бъдат десериализирани в екземпляри на един от вашите класове.