Команда ReQL: getAll
Синтаксис команды
table.getAll([key, key2...]) → selection
Описание
Получение всех документов, где заданное значение соответствует значению запрошенного индекса.
Пример: Ключи вторичных индексов не гарантируют уникальность, поэтому при использовании вторичного индекса запрос через get невозможен.
r.table("marvel").getAll("man_of_steel").optArg("index", "code_name").run(conn);
Пример: Без аргумента индекса используется первичный индекс. В то время как get вернет документ или null в случае отсутствия документа с таким значением первичного ключа, это вернёт поток длиной один или ноль.
r.table("dc").getAll("superman").run(conn);
Пример: Вы можете получить несколько документов в одном вызове get_all.
r.table("dc").getAll("superman", "ant man").run(conn);
Примечание:
getAllне выполняет дедупликацию. Если вы передадите один и тот же ключ более одного раза, документ будет возвращён несколько раз.
Пример: Вы можете использовать args с getAll для извлечения нескольких документов, ключи которых находятся в списке. Это использует getAll для получения списка женских супергероев, принудительно преобразует его в массив и затем получает список злодеев, у которых эти супергерои являются врагами.
r.do(
r.table("heroes").getAll("f").optArg("index", "gender")
.g("id").coerceTo("array"),
heroines -> r.table("villains").getAll(r.args(heroines))
).run(conn);
Вызов getAll с нулевыми аргументами — что может произойти в этом примере, если список heroines не содержал элементов — не вернёт ничего, т.е. вернёт поток нулевой длины.
Вторичные индексы могут быть использованы очень мощным образом с getAll и другими командами; ознакомьтесь со статьёй о вторичных индексах для примеров использования логических операций, contains и других.
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/java/get_all/