A BsonDocument
có thể được chuyển đổi thành IPipelineStageDefinition. Để có được BsonDocument bạn muốn, bạn chỉ muốn:
var addFieldsDefinitionDoc = BsonDocument.Parse(addFieldsDefinition.ToString());
var stageElement = new BsonElement("$addFields", addFieldsDefinitionDoc);
var stage = new BsonDocument(stageElement)
Sau đó, để thêm nó, chỉ cần sử dụng:
aggregate = aggregate.AppendStage(stage);
Tôi không chắc liệu aggregate.Stages.Add
sẽ làm như vậy hay không nhưng tôi nghĩ rằng AppendStage có lẽ là cách tốt hơn để làm điều đó (mặc dù tôi không tìm thấy bất kỳ tài liệu nào cho tôi biết cách làm đúng của hầu hết mọi thứ vì vậy điều này đã được tìm thấy thông qua thử nghiệm và lỗi và kiểm tra nguồn để xem mọi thứ hoạt động như thế nào) ...
Bạn thậm chí có thể thêm các giai đoạn bổ sung bằng cách sử dụng các chức năng của trình tạo giai đoạn bình thường như vậy:
aggregate = aggregate.Project(projectionDefinition);
hoặc thậm chí
aggregate = aggregate
.AppendStage(stage)
.Project(projectionDefinition);