【问题标题】:MongoDB Fluent Aggregate Conditional StagesMongoDB Fluent 聚合条件阶段
【发布时间】:2021-03-02 15:23:20
【问题描述】:

使用Fluent聚合接口时,为什么后面添加的stage不起作用(stage 3)?

var fluentPipeline = _userToGroup.Aggregate()
            .AppendStage<BsonDocument>("stage 1")
            .AppendStage<BsonDocument>("stage 2");
if (condition)
    fluentPipeline.AppendStage<BsonDocument>("stage 3");
fluentPipeline.ToListAsync();

当在相同的代码行中添加到管道时,第 3 阶段工作,如下所示。这意味着这不是阶段的问题,而是据我了解如何将阶段添加到管道中。问题是为什么?

var fluentPipeline = _userToGroup.Aggregate()
            .AppendStage<BsonDocument>("stage 1")
            .AppendStage<BsonDocument>("stage 2")
            .AppendStage<BsonDocument>("stage 3");

【问题讨论】:

    标签: c# mongodb aggregate mongodb-.net-driver fluent


    【解决方案1】:

    您可以打开github 预览AppendStage 方法的主体。

    原来有一个return 语句,所以它总是返回一个新的PipelineDefinition 而不是修改现有的。因此,您必须将此返回值分配给一个变量。试试:

    var fluentPipeline = _userToGroup.Aggregate()
                .AppendStage<BsonDocument>("stage 1")
                .AppendStage<BsonDocument>("stage 2");
    
    if (condition)
        fluentPipeline = fluentPipeline.AppendStage<BsonDocument>("stage 3");
    
    fluentPipeline.ToListAsync();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多