Searchkick `all` для нескольких массивов с OR - PullRequest
0 голосов
/ 09 ноября 2018

Мне нужно создать логический запрос с помощью searchkick, который проверит несколько массивов, и условие должно быть истинным, если все элементы массива существуют.

Я хочу записи, которые содержат ["2019-11-05", "2019-11-06", "2019-11-07"] все даты из одного массива ИЛИ из второго массива ["2019-11-08", "2019-11-09", "2019-11-10"]

отлично работает для одного массива, подобного этому.

available_on: { all: ["2019-11-05", "2019-11-06", "2019-11-07"] }

Мне нужно что-то вроде этого

available_on: { or: { all: ["2019-11-05", "2019-11-06", "2019-11-07"] , all: ["2019-11-08", "2019-11-09", "2019-11-10"]} }

как мы можем создать запрос available_on = A ИЛИ B

  1. A, B - массивы, и нам нужно сопоставить все элементы массивов
  2. available_on - целевой термин (также массив в индексе)

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вы должны использовать where с фильтром or следующим образом:

where {or: [[{available_on: {all: ["2019-11-05", "2019-11-06", "2019-11-07"]}},
             {available_on: {all: ["2019-11-08", "2019-11-09", "2019-11-10"]}}]]}

или используйте _or фильтр:

where {_or: [{available_on: {all: ["2019-11-05", "2019-11-06", "2019-11-07"]}},
              available_on: {all: ["2019-11-08", "2019-11-09", "2019-11-10"]}]}

Нет разницы результатов между _or и or, только немного другой синтаксис (or используйте еще одну пару квадратных скобок)

0 голосов
/ 13 ноября 2018

Вы пытались использовать это в предложении 'where'?

_or: [{available_on: {all: ["2019-11-05", "2019-11-06", "2019-11-07"]}}, {available_on: {all: ["2019-11-05", "2019-11-06", "2019-11-07"]}} ]}
...