如何在C#Mongo驱动程序中使用$facet进行以下查询?
我想在我的数据上创建一个聚合,以获取.Net应用程序中项目集合中具有特定标记的项目总数如何在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
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结果=集合(管道);
此外,您还可以找到如何配置类型化(和其他)方面阶段的示例