Ein BsonDocument
kann in eine IPipelineStageDefinition konvertiert werden. Um das gewünschte BsonDocument zu erhalten, brauchen Sie nur:
var addFieldsDefinitionDoc = BsonDocument.Parse(addFieldsDefinition.ToString());
var stageElement = new BsonElement("$addFields", addFieldsDefinitionDoc);
var stage = new BsonDocument(stageElement)
Um es dann hinzuzufügen, verwenden Sie einfach:
aggregate = aggregate.AppendStage(stage);
Ich bin mir nicht sicher, ob aggregate.Stages.Add
würde dasselbe tun oder nicht, aber ich denke AppendStage ist wahrscheinlich der bessere Weg, dies zu tun (obwohl ich keine Dokumentation gefunden habe, die mir sagt, wie die meisten Dinge richtig zu tun sind, also wurde dies durch Versuch und Irrtum und Überprüfung der Quelle gefunden, um zu sehen, wie die Dinge funktionieren) ...
Sie können sogar zusätzliche Stages hinzufügen, indem Sie die normalen Stage-Builder-Funktionen wie folgt verwenden:
aggregate = aggregate.Project(projectionDefinition);
oder sogar
aggregate = aggregate
.AppendStage(stage)
.Project(projectionDefinition);