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

Brug af facetter i Aggregation Framework C# med Multiple Facet, Slap af og sortByCount

En af udfordringerne her, formoder jeg, er, at efter $unwind stadier du straks skal håndtere BsonDocument s i din $facet stadier - ikke Product s.

Uanset hvad, her er en fungerende version:

var tomFilter = Builders<BsonDocument>.Filter.Eq("ProductAttributes.ProductAttributeType", "Tom");
var matchTom = PipelineStageDefinitionBuilder.Match(tomFilter);

var colecaoFilter = Builders<BsonDocument>.Filter.Eq("ProductAttributes.ProductAttributeType", "Coleção");
var matchColecao = PipelineStageDefinitionBuilder.Match(colecaoFilter);

var sortByCount = PipelineStageDefinitionBuilder.SortByCount<BsonDocument, string>("$ProductAttributes.Values");

var pipelineTom = PipelineDefinition<BsonDocument, AggregateSortByCountResult<string>>.Create(new IPipelineStageDefinition[] { matchTom, sortByCount });
var pipelineColecao = PipelineDefinition<BsonDocument, AggregateSortByCountResult<string>>.Create(new IPipelineStageDefinition[] { matchColecao, sortByCount });

var facetPipelineTom = AggregateFacet.Create("Tom", pipelineTom);
var facetPipelineColecao = AggregateFacet.Create("Colecao", pipelineColecao);

var pipeline = _products.Aggregate()
    .Unwind(p => p.ProductAttributes)
    .Unwind(p => p["ProductAttributes.Values"])
    .Facet(facetPipelineTom, facetPipelineColecao);

Console.WriteLine(pipeline.Single().Facets.ToJson());



  1. Hvorfor viser MongoDB forskellige forespørgselsplaner forskellig nReturneret værdi?

  2. Spørg MongoDB, om det er Master ud af et bashscript

  3. Hvordan kan jeg opdage mongodb reconnect mislykket hændelse

  4. MongoDB grupper efter array indre-elementer