在 RethinkDB 映射步骤中发出多个值

Emit multiple values in RethinkDB map step

我有由数组和单个值组成的数据集

{
     "a": "18",
     "b": ["x","y","z"]
}

或者数组与数组

{
     "a": ["g", "h", "i"],
     "b": ["x", "y", "z"]
}

并且我计划绘制出每个组合(例如“18-x”、“18-y”、“18-z”或 "g-x"、"g-y"...)以进行计数这些之后(或做任何其他事情)。我习惯了 CouchDB 的 emit 函数:我只是为每个文档发出多个组合。这应该如何在 RethinkDB 中完成?

注意:数据集是由连接生成的

我建议将两个字段始终设为数组,即使数组有时只有一个值。

如果你这样做,你可以用 concat_map:

row('a').concatMap(function(a){
  return row('b').map(function(b){
    return a.add('-').add(b);
  });
});

如果您想继续混合使用单个值和数组,可以将 r.row('a') 替换为 r.branch(r.row('a').typeOf().eq('ARRAY'), r.row('a'), [r.row('a')])