Un BsonDocument
può essere convertito in un IPipelineStageDefinition. Per ottenere il BsonDocument che desideri, devi solo:
var addFieldsDefinitionDoc = BsonDocument.Parse(addFieldsDefinition.ToString());
var stageElement = new BsonElement("$addFields", addFieldsDefinitionDoc);
var stage = new BsonDocument(stageElement)
Quindi per aggiungerlo basta usare:
aggregate = aggregate.AppendStage(stage);
Non sono sicuro se aggregate.Stages.Add
farebbe lo stesso o no, ma io penso AppendStage è probabilmente il modo migliore per farlo (anche se non ho trovato alcuna documentazione che mi dica qual è il modo giusto di fare la maggior parte delle cose, quindi questo è stato trovato attraverso prove ed errori e ispezionando la fonte per vedere come funzionano le cose)...
Puoi persino aggiungere fasi aggiuntive utilizzando le normali funzioni di creazione di fasi in questo modo:
aggregate = aggregate.Project(projectionDefinition);
o anche
aggregate = aggregate
.AppendStage(stage)
.Project(projectionDefinition);