Как я могу фильтровать, если какое-либо значение массива содержится в другом массиве в rethinkdb / reql? - PullRequest
0 голосов
/ 08 марта 2020

Я хочу найти любого пользователя, который является членом группы, которой я могу управлять (используя веб-интерфейс / javascript):

Пользователи:

{
  "id": 1
  "member_in_groups": ["all", "de-south"]
},
{
  "id": 2
  "member_in_groups": ["all", "de-north"]
}

Я пытался:

r.db('mydb').table('users').filter(r.row('member_in_groups').map(function(p) {
  return r.expr(['de-south']).contains(p);
}))

но всегда возвращаются оба пользователя. Какую команду мне нужно использовать и как я могу использовать индекс для этого (я читал о мультииндексах в https://rethinkdb.com/docs/secondary-indexes/python/#multi -индексах , но там ищется только одно значение)?

1 Ответ

0 голосов
/ 08 марта 2020

Я получил правильный ответ на слабом канале, поэтому разместите его здесь, если кто-нибудь еще зайдет в эту ветку через поиск в Google:

Сначала создайте мультииндекс, как описано в https://rethinkdb.com/docs/secondary-indexes/javascript/, например,

r.db('<db-name>').table('<table-name>').indexCreate('<some-index-name>', {multi: true}).run()

(вы можете опустить .run() при использовании вебадмина)

Затем запросить данные с помощью

r.db('<db-name>').table('<table-name>').getAll('de-north', 'de-west', {index:'<some-index-name>'}).distinct()
...