我有一个使用group()
函数的查询:
...group('a','b','c','na').count()
现在的结果是以组的形式返回,并像这样减少:
如何在没有组的情况下获得结果并以以下形式减少
{
"na": 1285
"c" : 487
"b" : 746
"a" : 32
}
我不确定,但我认为您误解了 group 的作用。
该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
and分组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()