【发布时间】:2014-03-08 12:25:36
【问题描述】:
我有一个相当复杂的文档模型,其结构如下:
{
_id: 1,
"title": "I'm number one",
... (many other meta data text fields not desired in the summary)
"foo": {
"tom": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
"dick": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
"harry": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
... (Total of 14 fields in foo)
},
"bar": {
"joe": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
"fred": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
"bob": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
... (Total of 14 fields in bar)
},
"dodads": [
{
"contraption": 0,
"doohickey": 0,
"gewgaw": 0,
"gizmo": 0,
... (total of 15 elements in each doodad object)
},
{
"contraption": 0,
"doohickey": 0,
"gewgaw": 0,
"gizmo": 0,
...
},
... (total of 6 objects in dodads object array)
]
},
... (a couple hundred documents in total)
我正在寻找的是所有具有数字数据的对象/数组的摘要。我希望结果是原始格式的文档,其中包含汇总的数字字段。现在,假设文档都具有相同的结构。
聚合结果如下
{
"foo": {
"tom": [35, 65, 13, 22, 36, 58, 93, 43, 56, 44, 23, 72],
"dick": [56, 87, 28, 49, 34, 22, 48, 86, 29, 23, 88, 29],
... (All 14 fields in foo)
},
"bar": {
"joe": [87, 28, 49, 34, 22, 48, 86, 29, 23, 88, 29, 47],
"fred": [13, 22, 36, 58, 93, 43, 56, 44, 23, 72, 35, 65],
... (All 14 fields in bar)
},
"dodads": [
{
"contraption": 45,
"doohickey": 88,
"gewgaw": 23,
"gizmo": 64,
... (All 15 elements in each doodad object)
},
{
"contraption": 12,
"doohickey": 73,
"gewgaw": 57,
"gizmo": 86,
...
},
... (All 6 objects in dodads object array)
]
}
我相信我可以展开数组,指定总和和投影,并通过广泛而详细的聚合管道获得我想要的东西。我还可以执行多个查询来获取组件(一个只是 foo,第二个只是 bar ...)。
我想知道的是,是否有指定摘要的简写方式?例如,我可以说我想要foo 或foo.tom 的摘要并取回它们的摘要内容吗?
【问题讨论】:
-
你能解释一下你所说的“总结”是什么意思吗?您是否只要求输出中的数字字段而不要求其他字段
-
@NeilLunn 是所有具有数字数据的对象/数组的摘要。我添加了一个示例输出,希望能澄清我正在寻找的结果。
标签: mongodb aggregation-framework