2

我有一个使用group()函数的查询:

...group('a','b','c','na').count()

现在的结果是以的形式返回,并像这样减少

在此处输入图像描述

如何在没有组的情况下获得结果并以以下形式减少

{
"na": 1285
"c" : 487
"b" : 746
"a" : 32
}
4

1 回答 1

1

我不确定,但我认为您误解了 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
  }]

然后将它们按aand分组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()
于 2015-07-13T18:09:56.373 回答