RethinkDB过滤数组,return只匹配值

RethinkDB filter array, return only matched values

我有一个table这样的

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

只想获取 "new" 的匹配值,我正在使用这样的查询:

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

但是给出错误

e: Expected type STRING but found ARRAY in

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

谢谢

你得到 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"
]