Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C#Mongo驱动程序中使用$facet进行以下查询?_C#_Aggregation Framework_Mongodb .net Driver - Fatal编程技术网

如何在C#Mongo驱动程序中使用$facet进行以下查询?

如何在C#Mongo驱动程序中使用$facet进行以下查询?,c#,aggregation-framework,mongodb-.net-driver,C#,Aggregation Framework,Mongodb .net Driver,我想在我的数据上创建一个聚合,以获取.Net应用程序中项目集合中具有特定标记的项目总数 let type = 1 let dataPipeline = []; dataPipeline = dataPipeline.concat([{ "$match": { $and: [{ "basicDetails.isDeleted": 0 }, { "basicD

我想在我的数据上创建一个聚合,以获取.Net应用程序中项目集合中具有特定标记的项目总数

let type = 1
let dataPipeline = [];
dataPipeline = dataPipeline.concat([{
    "$match": {
      $and: [{
          "basicDetails.isDeleted": 0
        },
        {
          "basicDetails.type": type
        }
      ]
    },
  },
  {
    "$lookup": {
      from: "ProjectStatusTheme",
      localField: "id",
      foreignField: "basicDetails.status.id",
      as: "statusColorMapping"
    }
  },
  {
    "$facet": {
      "totalProjectsCount": [{
        "$group": {
          "_id": {
            "Status": {
              "id": -1,
              "name": "Total Projects",
            },
            "Color": {
              "$arrayElemAt": ["$statusColorMapping.color", {
                "$indexOfArray": ["$statusColorMapping.id", -1]
              }]
            },
          },
          "count": {
            "$sum": 1
          }
        }
      }],
      "countByStatus": [{
          "$group": {
            "_id": {
              "Status": "$basicDetails.status",
              "Color": {
                "$arrayElemAt": ["$statusColorMapping.color", {
                  "$indexOfArray": ["$statusColorMapping.id", "$basicDetails.status.id"]
                }]
              }
            },
            "count": {
              "$sum": 1
            },
          }
        },
        {
          $sort: {
            _id: 1
          }
        }
      ]
    }
  }
]);
我想使用MongoDB C#driver中的聚合框架在.Net中运行上述查询。 我可以在.net中运行匹配和查找,如下所示:

var match1=新的BsonDocument{
{
“$match”,
新的B文件{
{
“基本细节已删除”,
0
}, {
“基本细节.类型”,
Int16.Parse(类型)
}
}
}
};
var lookup1=新的BsonDocument{
{
“$lookup”,
新的B文件{
{
“从”,
“项目状态主题”
}, {
“localField”,
“id”
}, {
“外域”,
“基本详细信息。状态。id”
}, {
“作为”,
“状态颜色映射”
}
}
}
};
var管道=新[]{
匹配1,
查找1
};
var result2=projectscolection.Aggregate(管道);

但是,我无法将$facet转换为Mongo的.NETC#驱动程序。如何使用.NET C#驱动程序执行此操作?

您可以通过:
BsonDocument.Parse(“valid_bson_document_string”)
使用任何有效的
BsonDocument
阶段,因此在您的情况下:

var pipeline = new [] {
  match1,
  lookup1,
  BsonDocument.Parse("facet_stage")
};
var result = coll.Aggregate<BsonDocument>(pipeline);
var pipeline=new[]{
匹配1,
查找1,
解析(“facet_阶段”)
};
var结果=集合(管道);
此外,您还可以找到如何配置类型化(和其他)方面阶段的示例