组可以有多个聚合吗?

时间:2014-07-10 04:37:10

标签: rethinkdb

我想做这样的事情:

r.db('research').table('books').group('year').sum('size_bytes').count().run()

得到这样的结果:

{ {"group": 1901, "reduction_size_bytes": 13929238, "reduction_count": 192}, {"group": 1902, "reduction_size_bytes": 21194721, "reduction_count": 223}, ... }

目前,我只知道如何一次“减少”,例如size_bytes之和:

r.db('research').table('books').group('year').sum('size_bytes').run()

结果:

{ {"group": 1901, "reduction": 13929238}, {"group": 1902, "reduction": 21194721}, ... }

1 个答案:

答案 0 :(得分:2)

您可以运行多个聚合,但必须手动执行(例如,您不能使用sum)。

这就是你要找的东西:

r.db('research').table('books').group('year').map(function(book) {
  return {
    size_bytes: book("size_bytes"),
    count: 1
  }
}).reduce(function(left, right) {
  return {
    size_bytes: left("size_bytes").add(right("size_bytes")),
    count: left("count").add(right("count"))
  }
}).run()