rethinkdb 查询中的过滤器、求和和 div
filter, sum and div in rethinkdb query
我如何将这两个查询连接在一起...我的意思是在一定时间内获得点击率...我尝试了不同的方法来解决它但找不到任何方法在 rethinknDB 中编写查询...
**r.expr({total_page_position:r.table('test_pagol')('position').sum(), total_page_load: r.table('test_pagol')('page').sum()}).merge({CRT: r.row('total_page_load').div(r.row('total_page_position'))**
**r.table("test_pagol").filter(
(r.row["timestamp"] >= 1429617902988)
& (r.row["timestamp"] >= 1429617922119))**
您可以为此使用 map
和 reduce
命令:
r.table("test_pagol").filter(
r.row("timestamp").ge(1429617902988)
.and(r.row("timestamp").le(1429617922119))
).map({
'total_page_position': r.row('position'),
'total_page_load': r.row('page')
}).reduce(function(left, right) {
return {
'total_page_position': left('total_page_position').add(right('total_page_position')),
'total_page_load': left('total_page_load').add(right('total_page_load'))
}
}).merge({
'CRT': r.row('total_page_load').div(r.row('total_page_position'))
})
有关 map
的更多信息:
http://www.rethinkdb.com/api/javascript/map/
有关 reduce
的更多信息:
http://www.rethinkdb.com/api/javascript/reduce/
(一个不相关的注释:如果你想让这个查询更快,你可以在 timestamp
字段上创建一个索引并将 filter
替换为 between(1429617902988, 1429617922119, {index: "timestamp", rightBound="closed"})
,请参阅 http://www.rethinkdb.com/api/javascript/between/ )
我如何将这两个查询连接在一起...我的意思是在一定时间内获得点击率...我尝试了不同的方法来解决它但找不到任何方法在 rethinknDB 中编写查询...
**r.expr({total_page_position:r.table('test_pagol')('position').sum(), total_page_load: r.table('test_pagol')('page').sum()}).merge({CRT: r.row('total_page_load').div(r.row('total_page_position'))**
**r.table("test_pagol").filter(
(r.row["timestamp"] >= 1429617902988)
& (r.row["timestamp"] >= 1429617922119))**
您可以为此使用 map
和 reduce
命令:
r.table("test_pagol").filter(
r.row("timestamp").ge(1429617902988)
.and(r.row("timestamp").le(1429617922119))
).map({
'total_page_position': r.row('position'),
'total_page_load': r.row('page')
}).reduce(function(left, right) {
return {
'total_page_position': left('total_page_position').add(right('total_page_position')),
'total_page_load': left('total_page_load').add(right('total_page_load'))
}
}).merge({
'CRT': r.row('total_page_load').div(r.row('total_page_position'))
})
有关 map
的更多信息:
http://www.rethinkdb.com/api/javascript/map/
有关 reduce
的更多信息:
http://www.rethinkdb.com/api/javascript/reduce/
(一个不相关的注释:如果你想让这个查询更快,你可以在 timestamp
字段上创建一个索引并将 filter
替换为 between(1429617902988, 1429617922119, {index: "timestamp", rightBound="closed"})
,请参阅 http://www.rethinkdb.com/api/javascript/between/ )