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