RethinkDB: фильтровать документы на основе отфильтрованного поля - PullRequest
0 голосов
/ 21 апреля 2020

У меня есть таблица документов (entity) с полем, представляющим собой список объектов:

{
    "field": { 
        "content": [
            { "url": "https://www.google.com" },
            { "url": "" }
        ]
},
{
    "field": {
        "content": [
            { "url": "" }
        ]
}

Я хочу отфильтровать таблицу, чтобы получить только те документы, которые имеют допустимое содержимое , Допустимое содержимое определяется как поле content, которое содержит хотя бы один элемент с непустым url.

Я пробовал это, но он жалуется на функцию внутренней фильтрации:

r.db('my_db').table('entity').filter(function (row){
  return row({'field': 'content'}).filter(function (item) {
    return item.hasField('url')
      .and(item('url').ne(''))
  }).count().gt(0)
})

1 Ответ

0 голосов
/ 21 апреля 2020

Проблема была не в фильтрации - я неправильно обращался к вложенному полю.

Это работает:

r.db('my_db').table('entity').filter(function (row){
  return row('field')('content').filter(function (item) {
    return item.hasField('url')
      .and(item('url').ne(''))
  }).count().gt(0)
})
...