RethinkDB从行生成键值对

时间:2018-12-03 07:51:43

标签: rethinkdb rethinkdb-javascript

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

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中进行这种转换(如果可能的话)?

1 个答案:

答案 0 :(得分:1)

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

    [[“接受”,1],[“拒绝”,1],[“待处理”,1]]

  • 最后,您只需使用coerceTo("object")将其转换为json对象,即可返回所需的格式:

    {   “已接受”:1   “拒绝”:1,   “待处理”:1 }