如何在数组上使用 ReQL 过滤器和匹配命令
How to use ReQL filter and match command on arrays
我在 rethinkdb 中有一个 table,其中每一行都有以下结构 -
{
'name':'clustername',
'services':[
{
'name':'service1'
},
{
'name':'service2'
}
]
}
我是运行一个像这样过滤service2对象的查询
r.table('clusters').filter({"name": "clustername"})
.pluck('services').filter((service) => {
return service("name").match('service2')
})
但这没有返回任何东西:No results were returned for this query
谁能告诉我为什么会这样?
pluck
returns序列,所以这个查询:
r.table('clusters').filter({"name": "clustername"}).pluck('services')
将return:
{
"services": [
{
"name": "service1"
} ,
{
"name": "service2"
}
]
}
您需要从中获取 services
字段,它将 return 数组与 filter
找到的项目的 services
字段。
之后,您需要使用 map
.
对每个项目使用第二个过滤器
所以,正确的查询:
r.table('clusters').filter({"name": "clustername"}).pluck('services')("services").map(item => {
return item.filter(service => {
return service("name").match("service2");
});
})
我在 rethinkdb 中有一个 table,其中每一行都有以下结构 -
{
'name':'clustername',
'services':[
{
'name':'service1'
},
{
'name':'service2'
}
]
}
我是运行一个像这样过滤service2对象的查询
r.table('clusters').filter({"name": "clustername"})
.pluck('services').filter((service) => {
return service("name").match('service2')
})
但这没有返回任何东西:No results were returned for this query
谁能告诉我为什么会这样?
pluck
returns序列,所以这个查询:
r.table('clusters').filter({"name": "clustername"}).pluck('services')
将return:
{
"services": [
{
"name": "service1"
} ,
{
"name": "service2"
}
]
}
您需要从中获取 services
字段,它将 return 数组与 filter
找到的项目的 services
字段。
之后,您需要使用 map
.
所以,正确的查询:
r.table('clusters').filter({"name": "clustername"}).pluck('services')("services").map(item => {
return item.filter(service => {
return service("name").match("service2");
});
})