sql >> データベース >  >> NoSQL >> MongoDB

複数のファセット、Unwind、sortByCountを使用したAggregation Framework C#でのファセットの使用

    ここでの課題の1つは、$unwindの後のことだと思います。 すぐに処理する必要のあるステージBsonDocument s $facet ステージ-Productではありません s。

    とにかく、これが動作するバージョンです:

    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. CentOS7でMongoDB3.0.2サービスを開始できません

    2. sidekiqのジョブの実行時間を短縮します

    3. 結果がない場合、MongoDBの集計リターンカウントは0です。

    4. MongoDBとJavascriptを使用して、プロジェクションのサブドキュメントプロパティをカウントします