RethinkDB过滤器数组,仅返回匹配的值

时间:2018-02-18 10:44:58

标签: rethinkdb rethinkdb-javascript

我有一张这样的表

{
  dummy: [
     "new val",
     "new val 2",
     "new val 3",
     "other",
  ]   
}

希望只为#34; new"获取匹配的值,我正在使用这样的查询:

r.db('db').table('table')('dummy').filter(function (val) {
 return val.match("^new")
})

但是给出错误

e: Expected type STRING but found ARRAY in

查询有什么问题,如果我删除.match(" ^ new"),它会返回所有值

由于

1 个答案:

答案 0 :(得分:0)

您获得Expected type STRING but found ARRAY in的原因是dummy字段的值本身就是数组,并且您无法将match应用于数组。 尽管您尝试的filter可能看起来令人困惑,但您必须重新考虑一下您的查询:只需将数组重新映射到新的^new - 键控数组,然后在内部表达式中过滤掉它的值。 例如:

r.db('db')
    .table('table')
    .getField('dummy')
    .map((array) => array.filter((element) => element.match("^new")))

输出:

[
    "new val" ,
    "new val 2" ,
    "new val 3"
]