Sebuah BsonDocument
dapat diubah menjadi IPipelineStageDefinition. Untuk mendapatkan BsonDocument yang Anda inginkan, Anda hanya ingin:
var addFieldsDefinitionDoc = BsonDocument.Parse(addFieldsDefinition.ToString());
var stageElement = new BsonElement("$addFields", addFieldsDefinitionDoc);
var stage = new BsonDocument(stageElement)
Kemudian untuk menambahkannya cukup gunakan:
aggregate = aggregate.AppendStage(stage);
Saya tidak yakin apakah aggregate.Stages.Add
akan melakukan hal yang sama atau tidak tetapi saya berpikir AppendStage mungkin adalah cara yang lebih baik untuk melakukannya (walaupun saya belum menemukan dokumentasi yang memberi tahu saya apa cara yang benar untuk melakukan banyak hal sehingga ini ditemukan melalui coba-coba dan memeriksa sumbernya untuk melihat cara kerjanya)...
Anda bahkan dapat menambahkan tahapan tambahan menggunakan fungsi pembuat tahapan normal seperti:
aggregate = aggregate.Project(projectionDefinition);
atau bahkan
aggregate = aggregate
.AppendStage(stage)
.Project(projectionDefinition);