MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Utilizzo di $ addFields nel driver MongoDB per C#

Un BsonDocument può essere convertito in un IPipelineStageDefinition. Per ottenere il BsonDocument che desideri, devi solo:

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

Quindi per aggiungerlo basta usare:

aggregate = aggregate.AppendStage(stage);

Non sono sicuro se aggregate.Stages.Add farebbe lo stesso o no, ma io penso AppendStage è probabilmente il modo migliore per farlo (anche se non ho trovato alcuna documentazione che mi dica qual è il modo giusto di fare la maggior parte delle cose, quindi questo è stato trovato attraverso prove ed errori e ispezionando la fonte per vedere come funzionano le cose)...

Puoi persino aggiungere fasi aggiuntive utilizzando le normali funzioni di creazione di fasi in questo modo:

aggregate = aggregate.Project(projectionDefinition);

o anche

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