Et BsonDocument
kan konverteres til en IPipelineStageDefinition. For at få det BsonDocument, du ønsker, vil du bare have:
var addFieldsDefinitionDoc = BsonDocument.Parse(addFieldsDefinition.ToString());
var stageElement = new BsonElement("$addFields", addFieldsDefinitionDoc);
var stage = new BsonDocument(stageElement)
For at tilføje det skal du blot bruge:
aggregate = aggregate.AppendStage(stage);
Jeg er ikke sikker på, om aggregate.Stages.Add
ville gøre det samme eller ej, men jeg tror AppendStage er nok den bedre måde at gøre det på (selvom jeg ikke har fundet nogen dokumentation, der fortæller mig, hvad den rigtige måde at gøre de fleste ting på er, så dette blev fundet gennem forsøg og fejl og inspicering af kilden for at se, hvordan tingene fungerer)...
Du kan endda tilføje yderligere stadier ved at bruge de normale scenebyggerfunktioner som sådan:
aggregate = aggregate.Project(projectionDefinition);
eller endda
aggregate = aggregate
.AppendStage(stage)
.Project(projectionDefinition);