【发布时间】:2020-02-11 16:17:20
【问题描述】:
尝试使用我的 .NET Core 项目对我的 MongoDB 集合进行一些分析。 (C# 驱动程序)
我的问题是按多个字段以及嵌套数组元素字段进行聚合和分组。
对于初学者,这里是我可以记录的示例 -
{
"_id": ".....",
"CampaignId": 1,
"IsTest":false
"Events": [
{
"EventId": 1,
"IsFake": false
},
{
"EventId": 1,
"IsFake": true
}
{
"EventId": 2,
"IsFake": false
}
]
}
我的最终目标是生成一个如下所示的分析报告-
[
{
"CampaignId": 1,
"DocumentCountReal":17824,
"DocumentCountTest":321,
"EventCountReal":100,
"EventCountFake":5,
"Events": [
{
"EventId": 1,
"IsFake": false,
"Count": 50
},
{
"EventId": 1,
"IsFake": true,
"Count": 5
},
{
"EventId": 2,
"IsFake": false,
"Count": 50
}
]
},
{
"CampaignId": 2,
"DocumentCountReal":1314,
"DocumentCountTest":57,
"EventCountReal":50,
"EventCountFake":0,
"Events": [
{
"EventId": 1,
"IsFake": false,
"Count": 25
},
{
"EventId": 2,
"IsFake": false,
"Count": 25
}
]
}
]
只是为了向您展示我目前的立场,我发现了如何按一个字段分组哈哈... 示例 -
var result = collection.Aggregate().Group(c => c.CampaignId, r => new { CampaignId= r.Key, Count = r.Count()}).ToList();
找不到如何按嵌套数组元素字段(在示例中为 Event 中的 IsFake 属性)进行分组,并且通常无法构建我上面分享的结果。
令我惊讶的是,我在 google 中找不到很多相关问题..(特别是使用 c# 驱动程序)
非常感谢阅读
【问题讨论】:
-
看看
$facet算子在一个阶段执行多个聚合
标签: c# mongodb .net-core aggregate