MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Usando $ addFields no driver MongoDB para C #


Um BsonDocument pode ser convertido em um IPipelineStageDefinition. Para obter o BsonDocument que você deseja, basta:
var addFieldsDefinitionDoc = BsonDocument.Parse(addFieldsDefinition.ToString());
var stageElement = new BsonElement("$addFields", addFieldsDefinitionDoc);
var stage = new BsonDocument(stageElement)

Então, para adicioná-lo, basta usar:
aggregate = aggregate.AppendStage(stage);

Não tenho certeza se aggregate.Stages.Add faria o mesmo ou não, mas eu acho AppendStage é provavelmente a melhor maneira de fazer isso (embora eu não tenha encontrado nenhuma documentação me dizendo qual é a maneira certa de fazer a maioria das coisas, então isso foi encontrado por tentativa e erro e inspecionando a fonte para ver como as coisas funcionam) ...

Você pode até adicionar estágios adicionais usando as funções normais do construtor de estágios, assim:
aggregate = aggregate.Project(projectionDefinition);

ou mesmo
aggregate = aggregate
    .AppendStage(stage)
    .Project(projectionDefinition);