我有一个使用group()
函数的查询:
...group('a','b','c','na').count()
现在结果是以 group 和 reduction 的形式返回,如下所示:
如何在没有组的情况下获得结果并以
的形式减少{
"na": 1285
"c" : 487
"b" : 746
"a" : 32
}
答案 0 :(得分:1)
我不确定,但我认为你误解了群体做了什么。
group
命令接受属性并按该属性对文档进行分组。因此,例如,如果您想按a
属性对文档进行分组,那么看起来像这样:
{
a: 1
}, {
a: 1
}, {
a: 1
}, {
a: 2
}
然后您将运行以下查询:
r.table(...).group('a').count().ungroup()
哪会导致:
[
{
"group": 1 ,
"reduction": 3
},
{
"group": 2 ,
"reduction": 1
}
]
通过将多个参数传递给group
,您告诉它为所有这些属性创建不同的组。所以你有以下文件:
[ {
a: 1, b: 1
}, {
a: 1, b: 1
}, {
a: 1, b: 2
}, {
a: 2, b: 1
}]
您可以按a
和b
分组:
r.table(...).group('a', 'b').count().ungroup()
您将获得以下结果:
[{
"group": [ 1 , 1 ] ,
"reduction": 2
},
{
"group": [ 1 , 2 ] ,
"reduction": 1
},
{
"group": [ 2 , 1 ] ,
"reduction": 1
}]
您的答案
因此,当您执行.group('a','b','c','na').count()
时,您将按这4个属性对它们进行分组。如果您想要以下结果:
{
"na": 1285
"c" : 487
"b" : 746
"a" : 32
}
然后你的文件应该是这样的:
[{
property: 'a'
}, {
property: 'c'
}, {
property: 'na'
},
...
]
然后你会按照以下方式对它们进行分组:
r.table(...).group('property').count().ungroup()