Ett BsonDocument
kan konverteras till en IPipelineStageDefinition. För att få det BsonDocument du vill ha, vill du bara ha:
var addFieldsDefinitionDoc = BsonDocument.Parse(addFieldsDefinition.ToString());
var stageElement = new BsonElement("$addFields", addFieldsDefinitionDoc);
var stage = new BsonDocument(stageElement)
För att sedan lägga till det, använd bara:
aggregate = aggregate.AppendStage(stage);
Jag är inte säker på om aggregate.Stages.Add
skulle göra detsamma eller inte men jag tror AppendStage är förmodligen det bättre sättet att göra det (även om jag inte har hittat någon dokumentation som talar om för mig vad det rätta sättet att göra det mesta är, så detta hittades genom försök och fel och genom att inspektera källan för att se hur saker fungerar)...
Du kan till och med lägga till ytterligare steg med hjälp av de vanliga scenbyggarfunktionerna som så:
aggregate = aggregate.Project(projectionDefinition);
eller till och med
aggregate = aggregate
.AppendStage(stage)
.Project(projectionDefinition);