Команда ReQL: run
Синтаксис команды
query.run(conn[, options]) → cursor query.run(conn[, options]) → object
Описание
Выполняет запрос на подключении, возвращая либо единственный результат JSON, либо курсор, в зависимости от запроса.
Опции могут быть:
-
read_mode: Одно из трех возможных значений, влияющих на гарантию согласованности для запроса (по умолчанию:'single').-
'single'(по умолчанию) возвращает значения, которые находятся в памяти (но не обязательно записаны на диск) на первичной реплике. -
'majority'вернёт только значения, которые безопасно записаны на диск на большинстве реплик. Это требует отправки сообщения каждой реплике при каждом чтении, поэтому это самый медленный, но самый согласованный вариант. -
'outdated'вернет значения, находящиеся в памяти на произвольно выбранной реплике. Это самый быстрый, но наименее согласованный вариант.
-
-
time_format: формат возвращаемых временных значений (по умолчанию:'native'). Установите значение'raw', если вы хотите, чтобы временные значения возвращались как объекты JSON для экспорта. -
profile: возвращать ли профиль выполнения запроса (по умолчанию:false). -
durability: возможные значения —'hard'и'soft'. В режиме мягкой устойчивости RethinkDB подтвердит запись сразу после её получения, но до момента записи на диск. -
group_format: формат возвращаемых данныхgrouped_dataиgrouped_streams(по умолчанию:'native'). Установите'raw', если вы хотите получить сырой псевдотип. -
noreply: установите значениеtrueдля того, чтобы не получать объект результата или курсор и вернуть результат немедленно. -
db: база данных, к которой следует выполнить запрос, указанная с помощью команды db. По умолчанию используется база данных, указанная в параметреdbкоманды connect (по умолчаниюtest). Базу данных также можно указать отдельно с помощью командыdb. -
array_limit: максимальное количество элементов массива, которое может быть возвращено запросом (по умолчанию: 100 000). Это влияет на все команды ReQL, возвращающие массивы. Обратите внимание, что на размер массивов, записываемых в базу данных, это не влияет; для них всегда есть ограничение в 100 000 элементов. -
binary_format: формат возвращаемых двоичных данных (по умолчанию:'native'). Установите значение'raw', если вы хотите получить сырой псевдотип. -
min_batch_rows: минимальное количество строк, ожидаемых перед объединением набора результатов (по умолчанию: 8). Это целое число. -
max_batch_rows: максимальное количество строк, ожидаемых перед объединением набора результатов (по умолчанию: без ограничений). Это целое число. -
max_batch_bytes: максимальное количество байтов, ожидаемых перед объединением набора результатов (по умолчанию: 1 МБ). Это целое число. -
max_batch_seconds: максимальное время ожидания в секундах перед объединением набора результатов (по умолчанию: 0,5). Это число с плавающей запятой (а не целое число) и может быть указано с микросекундами. -
first_batch_scaledown_factor: коэффициент, на который будут уменьшены остальные параметры в первой партии (по умолчанию: 4). Например, если это значение 8, аmax_batch_rows80, в первой партии значениеmax_batch_rowsбудет скорректировано до 10 (80 / 8). Это позволяет быстрее вернуть первую партию.
Пример: Выполнение запроса на подключении conn и вывод каждой строки результата.
r.table('marvel').run(conn).each { |x| p x }
Пример: Если вы готовы к потенциально устаревшим данным из всех таблиц, участвующих в запросе, и хотите потенциально более быстрое чтение, передайте флаг, разрешающий использование устаревших данных в объекте параметров. Настройки отдельных таблиц переопределят это глобальное значение для всех таблиц в запросе.
r.table('marvel').run(conn, :read_mode => 'outdated')
Пример: Если вам нужно просто отправить запись и забыть о ней, вы можете установить noreply в значение true в параметрах. В этом случае run будет возвращен немедленно.
r.table('marvel').run(conn, :noreply => true)
Пример: Если вы хотите указать, следует ли ждать, пока запись будет записана на диск (переопределяя значения по умолчанию для таблицы), вы можете установить durability в 'hard' или 'soft' в параметрах.
r.table('marvel')
.insert({ :superhero => 'Iron Man', :superpower => 'Arc Reactor' })
.run(conn, :noreply => true, :durability => 'soft')
Пример: Если вы не хотите, чтобы объект времени преобразовывался в объект даты, вы можете передать флаг time_format (допустимые флаги: «сырой» и «родной»). Этот запрос возвращает объект с двумя полями (epoch_time и $reql_type$), а не объект даты.
r.now().run(conn, :time_format=>"raw")
Пример: Укажите базу данных для использования в запросе.
r.table('marvel').run(conn, :db => r.db('heroes')).each { |x| p x }
Это эквивалентно использованию команды db для указания базы данных:
r.db('heroes').table('marvel').run(conn) ...
Пример: Изменение параметров объединения для данного запроса.
r.table('marvel').run(conn, :max_batch_rows => 16, :max_batch_bytes => 2048)
Пример: Используйте run с блоком Ruby. Этот стиль позволяет передавать курсор в блок в качестве аргумента, закрывая курсор по достижению конца блока.
r.table('marvel').run(conn) { |cursor|
cursor.each { |hero| fight(hero) }
}
```
© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/ruby/run/