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

时间:2015-06-30 22:32:06

标签: rethinkdb reql

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

{
     "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的发射功能:我只是为每个文档发出多个组合。这应该如何在RethinkDB中完成?

注意:数据集由连接

生成

1 个答案:

答案 0 :(得分:1)

我建议将这两个字段永远都是数组,即使数组有时只有一个值。

如果您这样做,可以使用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')])来实现。