我很难获得正确的查询。
我有一个遵循这种风格的架构:
{
"User": "user1" ,
"active": true ,
"points": {
"2015-07": 2 ,
"2015-08": 5 ,
"2015-09": 7 ,
"2015-10": 1 ,
"2015-11": 28 ,
"2015-12": 5 ,
"2016-01": 3
}
}
{
"User": "user2" ,
"active": true ,
"points": {
"2015-01": 8 ,
"2015-02": 4 ,
"2015-09": 6 ,
"2015-10": 12 ,
"2015-11": 34 ,
"2015-12": 1 ,
"2016-01": 2
}
}
如何编写将返回每个用户的查询以及总点数?
答案 0 :(得分:2)
在@ Tryneus'中只是一个小错字。例如,.sum(...)
应该在最后。试试这个:
r.db('test').table('test').map(function (x) {
return x.merge( {points: x('points').values().sum()})
})
答案 1 :(得分:1)
对于我们这些不幸仍然没有使用values
函数的RethinkDB版本的人来说,诀窍是首先检索所有键并使用map来检索一系列值:
r.db("test").table("test").map(function (x) {
return x.merge({
points: x("points").keys().map(function(key) {
return x("points")(key)
}).sum()
})
})
答案 2 :(得分:0)
使用map
执行此操作应该很简单,将每行中“points”对象的值相加。此代码使用Javascript,因此它应该在数据资源管理器中工作,其中r.expr(data)
是您要操作的值序列。
r.expr(data).map(function (x) {
return x.merge({points:r.sum(x('points').values())});
})