sql >> Databáze >  >> NoSQL >> MongoDB

Používání faset v agregačním rámci C# s více fasetami, Unwind a sortByCount

Předpokládám, že jednou z výzev je, že po $unwind fáze, kterou musíte okamžitě řešit BsonDocument s ve vašem $facet etapy – nikoli Product s.

Každopádně zde je pracovní verze:

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. Jak aktualizovat vložený dokument v rámci vloženého dokumentu v mongoose?

  2. Může agregační rámec MongoDB $group vrátit pole hodnot?

  3. Jaký je nejlepší způsob, jak zvládnout globální připojení Mongodb v NodeJs

  4. Udržujte jeden dokument v kolekci mongoDB pomocí mongoose