我有一些指标集合,它们预先聚合到小时和分钟集合中,如下所示:
"_id" : "12345CHA-2RU020130104",
"metadata" : {
"adaptor_id" : "CHA-2RU",
"processor_id" : NumberLong(0),
"date" : ISODate("2013-01-04T00:00:00Z"),
"processor_type" : "CHP",
"array_serial" : NumberLong(12345)
},
"hour" : {
"11" : 4.6665907,
"21" : 5.9431519999999995,
"7" : 0.6405864,
"17" : 4.712744,
---etc---
},
"minute" : {
"11" : {
"33" : 4.689972,
"32" : 4.7190895,
---etc---
},
"3" : {
"45" : 5.6883,
"59" : 4.792,
---etc---
}
分钟集合每个小时都有一个子文档,其中每分钟都有一个条目,其中包含该分钟的度量值。
我的问题是关于聚合框架,如果我想找到指标高于某个高水位线的所有分钟数,我应该如何处理这个集合?调查聚合框架显示了一个 $unwind 函数,但这似乎只适用于数组..
map/reduce 功能会更适合这个吗?有了它,我可以简单地发出高于高水位线的任何条目并计算它们。