我在rethinkdb中有一个表,其中每一行都有以下结构 -
{
'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
有人能说出为什么会这样吗?
答案 0 :(得分:0)
pluck
返回序列,因此此查询:
r.table('clusters').filter({"name": "clustername"}).pluck('services')
将返回:
{
"services": [
{
"name": "service1"
} ,
{
"name": "service2"
}
]
}
您需要从中获取services
字段,它会返回包含services
找到的filter
项字段的数组。
之后,您需要使用map
在每个项目上使用第二个过滤器。
所以,正确的查询:
r.table('clusters').filter({"name": "clustername"}).pluck('services')("services").map(item => {
return item.filter(service => {
return service("name").match("service2");
});
})