计算我文档中数组中的不同变量

Count the different variables in an array in my document

我正在试用 rethinkDB 并尝试一些查询以查看它是否适合用例。到目前为止,一切都很好。但是,我有一个关于 reQL 的问题。

例如,在这种情况下,我将分析事件存储在 rethinkDB 中,例如:

[{
  "userId": "abdf213",
  "timestamp": "Sat Jan 17 2015 00:32:20 GMT+00:00",
  "action": "Page"
},
{
  "userId": "123abc",
  "timestamp": "Sat Jan 17 2015 00:42:20 GMT+00:00",
  "action": "Track"
},
{
  "userId": "abdf213",
  "timestamp": "Sat Jan 17 2015 00:45:20 GMT+00:00",
  "action": "Track"
},
{
  "userId": "123abc",
  "timestamp": "Sat Jan 17 2015 00:44:20 GMT+00:00",
  "action": "Page"
},
{
  "userId": "123abc",
  "timestamp": "Sat Jan 17 2015 00:48:20 GMT+00:00",
  "action": "Page"
}]

我希望查询的最终结果如下所示:

{
  "group": "123abc",
  "reduction": {
    "Page": 2,
    "Track": 1
  }
},
{
  "group": "abdf213",
  "reduction": {
    "Page": 1,
    "Track": 1
  }
}

请记住,事先不知道操作名称。

TBH,我不太确定如何使用 ReQL 实现此目的。

现在我有这个查询(使用数据浏览器):

r.db('test').table('events').group('userId').map(function(event) {
  return event('action')
})

哪个 return 医生喜欢这个:

{
  "group":  "-71omc5zdgdimpuveheqs6dvt5q6xlwenjg7m" ,
  "reduction": [
  "Identify" ,
  "Page" ,
  "Track"
  ]
}

任何人都可以在这里指出正确的方向吗?

干杯,

S

尝试:

r.table('events').group('userId').map(function(event) {
  return r.object(event('action'), 1);
}).reduce(function(a, b) {
  return a.merge(b.keys().map(function(key) {
    return [key, a(key).default(0).add(b(key))];}).coerceTo('object'));
})

这是我的解决方案:

r.table("events").group("userId", "action").count().ungroup()
                 .group(r.row("group")(0))
                 .map([r.row("group")(1), r.row("reduction")])
                 .coerceTo("object")

ReQL 不支持嵌套分组,但您可以同时按多个字段分组,然后对输出进行进一步分组。