如何在数组上使用 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

谁能告诉我为什么会这样?

pluckreturns序列,所以这个查询:

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");
    });

})