Een BsonDocument
kan worden omgezet in een IPipelineStageDefinition. Om het BsonDocument te krijgen dat u wilt, wilt u het volgende:
var addFieldsDefinitionDoc = BsonDocument.Parse(addFieldsDefinition.ToString());
var stageElement = new BsonElement("$addFields", addFieldsDefinitionDoc);
var stage = new BsonDocument(stageElement)
Om het toe te voegen, gebruik je gewoon:
aggregate = aggregate.AppendStage(stage);
Ik weet niet zeker of aggregate.Stages.Add
hetzelfde zou doen of niet, maar ik denk AppendStage is waarschijnlijk de betere manier om het te doen (hoewel ik geen documentatie heb gevonden die me vertelt wat de juiste manier is om de meeste dingen te doen, dus dit werd gevonden met vallen en opstaan en het inspecteren van de bron om te zien hoe de dingen werken)...
Je kunt zelfs extra fasen toevoegen met behulp van de normale functies voor het bouwen van een podium, zoals:
aggregate = aggregate.Project(projectionDefinition);
of zelfs
aggregate = aggregate
.AppendStage(stage)
.Project(projectionDefinition);