BsonDocument
може да се преобразува в IPipelineStageDefinition. За да получите BsonDocument, който искате, просто искате:
var addFieldsDefinitionDoc = BsonDocument.Parse(addFieldsDefinition.ToString());
var stageElement = new BsonElement("$addFields", addFieldsDefinitionDoc);
var stage = new BsonDocument(stageElement)
След това, за да го добавите, просто използвайте:
aggregate = aggregate.AppendStage(stage);
Не съм сигурен дали aggregate.Stages.Add
би направил същото или не, но мисля AppendStage вероятно е по-добрият начин да го направя (въпреки че не намерих никаква документация, която да ми казва кой е правилният начин за правене на повечето неща, така че това беше намерено чрез проба и грешка и проверка на източника, за да видя как работят нещата)...
Можете дори да добавите допълнителни етапи, като използвате нормалните функции за създаване на етапи, като така:
aggregate = aggregate.Project(projectionDefinition);
или дори
aggregate = aggregate
.AppendStage(stage)
.Project(projectionDefinition);