【问题标题】:RethinkDB nested groupingRethinkDB 嵌套分组
【发布时间】:2016-07-12 20:09:20
【问题描述】:

我有一个 RethinkDB 表,其中的文档看起来像这样:

[
  { "date": Mon Oct 05 2015 19:30:00 GMT+01:00, "category": 1, "name": "Alice" },
  { "date": Wed Oct 07 2015 14:00:00 GMT+01:00, "category": 2, "name": "Ben" },
  { "date": Mon Nov 16 2015 12:30:00 GMT+01:00, "category": 1, "name": "Charles" },
  { "date": Sun Nov 01 2015 22:15:00 GMT+01:00, "category": 1, "name": "Donald" }
  (...)
]

我正在尝试编写一个查询,以便按月/年对数据进行分组,然后(在每个组内)按类别分组,然后对子组执行一些聚合。

根据 ReQL 文档 (https://www.rethinkdb.com/api/javascript/group/) 中给出的示例,这是第一步:

r.table("seances").group([r.row("date").month(), r.row("date").year()])

我被困在这里了。与group(r.row("category")) 链接会给出错误消息(不能在group 的输出上调用group)。在第二个 group 之前调用 ungroup 也不起作用。

知道怎么做吗? (ReQL 看起来非常强大,但与我习惯使用的 lodash 完全不同......)。

【问题讨论】:

    标签: rethinkdb reql


    【解决方案1】:

    你可以写sequence.group(FIRST_GROUPING).ungroup().merge(function(row) { return {reduction: row('reduction').group(SECOND_GROUPING).ungroup()}; })

    【讨论】:

    • 谢谢,它有效!我必须弄清楚这到底是做什么的,但你让我走上了正确的轨道。不过,只有一条评论:如果我在 SECOND_GROUPING 中使用 r.row(),我会收到一条错误消息“无法在嵌套查询中使用 row()”。使用具有单个字段名称(例如“类别”)的字符串是可行的,但是如果我需要按比文档中的一层更深的字段进行分组怎么办?
    • 你可以写.group(function(row) { return row('a')('b'); }),而不是.group(r.row('a')('b'))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多