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"
]
我有一个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"
]