Spec-Zone.ru › RethinkDB ruby

Команда ReQL: get_nearest

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

table.get_nearest(point, {:index => 'indexname'[, :max_results => 100, :max_dist => 100000, :unit => 'm', :geo_system => 'WGS84']}) → array

Описание

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

Аргумент index обязателен. Дополнительные аргументы:

  • max_results: максимальное количество результатов (по умолчанию 100).
  • unit: единицы измерения расстояния. Возможные значения: m (метр, по умолчанию), km (километр), mi (миля), nm (морская миля), ft (фут).
  • max_dist: максимальное расстояние от объекта до заданной точки (по умолчанию 100 км).
  • geo_system: эллипсоид отсчета для географических координат. Возможные значения: WGS84 (по умолчанию), стандартный эллипсоид для геометрии Земли, или unit_sphere, идеальная сфера радиусом 1 метр.

Возвращаемое значение — массив объектов с двумя полями: dist и doc. Первое поле содержит расстояние между заданной точкой и документом (в единицах, указанных в unit, по умолчанию в метрах), а второе — сам документ. Массив будет отсортирован по значениям поля dist.

Пример: Возвращает список из 25 ближайших укрытий врага к секретной базе.

secret_base = r.point(-122.422876,37.777128)
r.table('hideouts').get_nearest(secret_base, {:index => 'location',
    :max_results => 25}).run(conn)

Если нужно найти все точки в определённом радиусе от другой точки, часто быстрее использовать get_intersecting с circle, если приближение круга, которое circle генерирует, достаточно.

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

  • get_intersecting

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

Spec-Zone.ru

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