sql >> Base de Datos >  >> NoSQL >> MongoDB

Uso de $addFields en MongoDB Driver para C#

Un BsonDocument se puede convertir en una IPipelineStageDefinition. Para obtener el BsonDocument que desea, solo necesita:

var addFieldsDefinitionDoc = BsonDocument.Parse(addFieldsDefinition.ToString());
var stageElement = new BsonElement("$addFields", addFieldsDefinitionDoc);
var stage = new BsonDocument(stageElement)

Luego, para agregarlo, solo use:

aggregate = aggregate.AppendStage(stage);

No estoy seguro si aggregate.Stages.Add haría lo mismo o no, pero creo AppendStage es probablemente la mejor manera de hacerlo (aunque no he encontrado ninguna documentación que me diga cuál es la forma correcta de hacer la mayoría de las cosas, así que esto se encontró a través de prueba y error e inspeccionando la fuente para ver cómo funcionan las cosas)...

Incluso puede agregar etapas adicionales usando las funciones normales del generador de etapas como esta:

aggregate = aggregate.Project(projectionDefinition);

o incluso

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