MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

allowDiskUse im Aggregation Framework mit MongoDB C#-Treiber

Verwenden Sie die andere Überladung von Aggregate, die einen AggregateArgs-Parameter annimmt und Ihnen mehr Kontrolle über den Vorgang gibt, einschließlich der Festlegung von 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();

Beachten Sie, dass der Rückgabetyp dieser Überladung von Aggregate IEnumerable ist, sodass Sie die ResultDocuments-Eigenschaft nicht mehr verwenden müssen.

Nur um das klarzustellen, das Select wird clientseitig ausgeführt. Möglicherweise können Sie es so einrichten, dass die aus Ihrer Aggregationspipeline kommenden Dokumente direkt in Instanzen einer Ihrer Klassen deserialisiert werden können.