Spec-Zone.ru › RethinkDB python

Команда ReQL: between

Синтаксис команды

table.between(lower_key, upper_key[, options]) → table_slice
table_slice.between(lower_key, upper_key[, options]) → table_slice

Описание

Получить все документы между двумя ключами. Принимает три необязательных аргумента: index, left_bound, и right_bound. Если index установлено в имя вторичного индекса, between вернёт все документы, где значение этого индекса находится в указанном диапазоне (по умолчанию используется первичный ключ). left_bound или right_bound могут быть установлены в open или closed для указания включения или невключения крайних точек диапазона (по умолчанию left_bound — закрытая, а right_bound — открытая).

Также можно использовать специальные константы r.minval и r.maxval для границ, представляющие соответственно «меньше любого ключа индекса» и «больше любого ключа индекса». Например, если вы используете r.minval в качестве нижнего ключа, то between вернёт все документы, первичные ключи (или индексы) которых меньше указанного верхнего ключа.

Если вы используете массивы в качестве индексов (составные индексы), они будут отсортированы по лексикографическому порядку. Рассмотрим пример диапазона:

[[1, "c"] ... [5, "e"]]

Этот диапазон включает все составные ключи:

  • первый элемент которых равен 1, а второй элемент равен или больше «c»;
  • первый элемент которых находится между 1 и 5, независимо от значения второго элемента;
  • первый элемент которых равен 5, а второй элемент меньше или равен «e».

Пример: Найти всех пользователей с первичным ключом >= 10 и < 20 (обычный полуоткрытый интервал).

r.table('marvel').between(10, 20).run(conn)

Пример: Найти всех пользователей с первичным ключом >= 10 и <= 20 (интервал, закрытый с обеих сторон).

r.table('marvel').between(10, 20, right_bound='closed').run(conn)

Пример: Найти всех пользователей с первичным ключом < 20.

r.table('marvel').between(r.minval, 20).run(conn)

Пример: Найти всех пользователей с первичным ключом > 10.

r.table('marvel').between(10, r.maxval, left_bound='open').run(conn)

Пример: Команда between может использоваться и для вторичных индексов. Просто передайте необязательный аргумент индекса, указывающий на вторичный индекс для запроса.

r.table('dc').between('dark_knight', 'man_of_steel', index='code_name').run(conn)

Пример: Получить всех пользователей, полное имя которых находится между «John Smith» и «Wade Welles».

r.table("users").between(["Smith", "John"], ["Welles", "Wade"],
    index="full_name").run(conn)

Пример: Получить 10 команд с наивысшим рейтингом в порядке сортировки.

r.table("teams").order_by(index="rank").between(1, 11).run(conn)

Примечание: Если between используется после order_by, обе команды должны использовать один и тот же индекс; between будет использовать индекс, который используется order_by, поэтому в данном примере "rank" автоматически используется between. Попытка указать другой индекс приведёт к ReqlRuntimeError.

Пример: Подписаться на изменения рейтинга 10 лучших команд.

changes = r.table("teams").between(1, 11, index="rank").changes().run(conn)

Команда between работает со вторичными индексами на полях типа date, но не будет работать с неиндексированными полями типа date. Для проверки того, что значение даты находится между двумя другими датами, используйте команду during, а не between.

Вторичные индексы могут использоваться очень эффективно с between и другими командами; ознакомьтесь со всей статьёй о вторичных индексах для примеров использования логических операций, contains и т. д.

RethinkDB использует байтовое упорядочение для between и не поддерживает сортировку Unicode; символы, не являющиеся ASCII, будут отсортированы по кодовым точкам UTF-8.

Связанные команды

  • get
  • get_all
  • filter

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/python/between/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API