计算我文档中数组中的不同变量
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 不支持嵌套分组,但您可以同时按多个字段分组,然后对输出进行进一步分组。
我正在试用 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 不支持嵌套分组,但您可以同时按多个字段分组,然后对输出进行进一步分组。