首页 > 解决方案 > RethinkDB 从行生成键值对

问题描述

我有以下查询,它返回每个状态的请求数 -

r.db.table("request").group("status").count()

结果 -

[
  {
    "group": "ACCEPTED",
    "reduction": 1
  },
  {
    "group": "DECLINED",
    "reduction": 1
  },
  {
    "group": "PENDING",
    "reduction": 1
  }
]

如何使用 rethinkdb 查询(javascript)将此结果转换为以下结果?

{
  "ACCEPTED": 1,
  "DECLINED": 1,
  "PENDING": 1
}

目前,我通过在 api 端迭代结果来实现这一点。但是我想要在 rethinkdb 中进行这种转换,如果它可能的话?

标签: rethinkdbrethinkdb-javascript

解决方案


   r.db("test").table("request").group("status").count()
    .ungroup()
    .map(function(x){ return [x('group'), x('reduction')]; })        
    .coerceTo("object")
  • 当您想继续处理返回对象时,您需要先调用该ungroup()函数
  • 然后,您需要使用 map 函数将结果转换为:

    [[“接受”,1],[“拒绝”,1],[“待定”,1]]

  • 最后,您只需将其转换为带有 的 json 对象coerceTo("object"),它会返回您所需的格式:

    {“接受”:1,“拒绝”:1,“待定”:1}


推荐阅读