如何在rethinkdb中分组后删除不必要的字段,只显示键值对?

时间:2015-04-18 20:36:03

标签: rethinkdb reql

我在rethinkdb中使用

得到了一些这样的结果
[  
   {  
      "group":[  
         0,
         "A"
      ],
      "reduction":14
   },
   {  
      "group":[  
         "B",
         0
      ],
      "reduction":2
   }
]

我喜欢 r ..... group(..)。count()(我不能提及所有查询,因为有很多步骤)。但我的结果应该像这样显示:

[  
       {  
          "group":[  
             "A"
          ],
          "reduction":14
       },
       {  
          "group":[  
             "B"
          ],
          "reduction":2
       }
    ]

更好的只是键值对[{"A":14},{"B":2}]

1 个答案:

答案 0 :(得分:1)

这不是世界上最干净的ReQL,但它有效!

r.expr([  
   {  
      "group":[  
         0,
         "A"
      ],
      "reduction":14
   },
   {  
      "group":[  
         "B",
         0
      ],
      "reduction":2
   }
])
.map(function (row) {
  // Return a tuple with the key and the value
  return [row('group').filter(function (row) { return row.eq(0).not() }).nth(0), row('reduction') ]
})
.map(function (row) {
  // Convert the tuple into an array by passing an array of key-value pairs
  return r.expr([row]).coerceTo('object')
})

你可以将这两个地图功能结合起来,但我个人认为将它们分开是更好的,以使它们更容易理解。

我使用了r.expr,因此您只需将其复制/粘贴到数据资源管理器中,看看它是否有效,但您可以在查询结尾复制/粘贴最后两个maps,结果会是一样的。

结果:

[
  {
    "A": 14
  } ,
  {
    "B": 2
  }
]