1

我在 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

谁能说出为什么会这样?

4

1 回答 1

1

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

})
于 2017-08-20T00:42:39.113 回答