【发布时间】:2019-09-18 17:57:01
【问题描述】:
我在 mongodb 中有一个具有以下结构的集合:
{
"RuleSetId": "5bfd3c25fe29a81aa42a3972",
"MachineName": "HDHX1090",
"IsCompliant": "False",
"InfoDate": ISODate("2019-09-15T23:14:22.032+0000")
},
{
"RuleSetId": "5bfd3c25fe29a81aa42a3972",
"MachineName": "HDHX2045",
"IsCompliant": "True",
"InfoDate": ISODate("2019-09-15T23:14:22.032+0000")
},
{
"RuleSetId": "5bfd3c25fe29a81aa42a3972",
"MachineName": "NDEN1295",
"IsCompliant": "False",
"InfoDate": ISODate("2019-09-15T23:12:22.032+0000")
},
{
"RuleSetId": "5bfd3c25fe29a81aa42a3972",
"MachineName": "HDHX1090",
"IsCompliant": "True",
"InfoDate": ISODate("2019-08-13T23:14:22.032+0000")
},
{
"RuleSetId": "5bfd3c25fe29a81aa42a3972",
"MachineName": "HDHX2045",
"IsCompliant": "True",
"InfoDate": ISODate("2019-08-13T23:14:22.032+0000")
},
{
"RuleSetId": "5bfd3c25fe29a81aa42a3972",
"MachineName": "NDEN1295",
"IsCompliant": "True",
"InfoDate": ISODate("2019-08-13T23:12:22.032+0000")
},
{
"RuleSetId": "5bfe7ef4ed244b1d48fdaaeb",
"MachineName": "HDHN1285",
"IsCompliant": "False",
"InfoDate": ISODate("2019-05-30T23:14:24.300+0000")
},
{
"RuleSetId": "5bfe7ef4ed244b1d48fdaaeb",
"MachineName": "HDHX1090",
"IsCompliant": "False",
"InfoDate":ISODate("2019-05-30T23:14:24.300+0000")
},
{
"RuleSetId": "5bfe91b3ed244b1d48fdabcb",
"MachineName": "HDHW2455",
"IsCompliant": "False",
"InfoDate": ISODate("2019-05-30T22:14:23.652+0000")
}
说明:
将有有限的 RuleSetId(15 到 20),并且针对每个 RuleSetId,在单个 InfoDate 上可以有 n 个具有 IsCompliant “True”或“False”的 MachineName,同样可以在不同的 InfoDate 上重复。
现在我想在 "RuleSetId"、"MachineName" 和 "InfoDate" 列上分组并应用 "count" > 基于 "IsCompliant" 值,我希望结果输出应如下所示:
{
"RuleSetId":"5bfd3c25fe29a81aa42a3972",
"History":[
{
"InfoDate":"2019-09-15",
"CompliantCount":1,
"NonCompliantCount":2
},
{
"InfoDate":"2019-08-13",
"CompliantCount":3,
"NonCompliantCount":0
}
]
},
{
"RuleSetId":"5bfe7ef4ed244b1d48fdaaeb",
"History":[
{
"InfoDate":"2019-05-30",
"CompliantCount":0,
"NonCompliantCount":3
}
]
}
是否可以使用 mongodb 的聚合方法来完成此任务,或者您会建议一些不同的方法来完成它?
在此先感谢,拉吉夫
【问题讨论】:
标签: mongodb mongodb-query aggregation-framework