RethinkDB 从行中生成键值对

RethinkDB generate key-value pair from rows

我有以下查询,其中 returns 每个状态的请求数 -

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

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

    [ [ "ACCEPTED" , 1 ] , [ "DECLINED" , 1 ] , [ "PENDING" , 1 ] ]

  • 最后,您只需将其转换为具有 coerceTo("object") 的 json-对象,return 就是您想要的格式:

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