sql >> Databasteknik >  >> NoSQL >> MongoDB

Använda $addFields i MongoDB Driver för C#

Ett BsonDocument kan konverteras till en IPipelineStageDefinition. För att få det BsonDocument du vill ha, vill du bara ha:

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

För att sedan lägga till det, använd bara:

aggregate = aggregate.AppendStage(stage);

Jag är inte säker på om aggregate.Stages.Add skulle göra detsamma eller inte men jag tror AppendStage är förmodligen det bättre sättet att göra det (även om jag inte har hittat någon dokumentation som talar om för mig vad det rätta sättet att göra det mesta är, så detta hittades genom försök och fel och genom att inspektera källan för att se hur saker fungerar)...

Du kan till och med lägga till ytterligare steg med hjälp av de vanliga scenbyggarfunktionerna som så:

aggregate = aggregate.Project(projectionDefinition);

eller till och med

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



  1. MongoDB sök efter varje dikt i listan i samlingen

  2. Hur fixar man detta Morphia-mappningsproblem??? ---> VARNING [org.mongodb.morphia.mapping.DefaultCreator] - Klass hittades inte definierad i dbObj:

  3. Kan jag fortfarande komma åt en sitecore-kontaktaspekt när sessionen har tömts?

  4. Ta bort ett underdokument från array i MongodDB