Nano Hash - криптовалюты, майнинг, программирование

Монгоидный 2d-запрос к связанной модели

У меня две модели, Location и Event.

class Event
  include Mongoid::Document
  field :name, type: String
  belongs_to :location
  index({'location.coordinates' => '2d'}, {unique: true})  # I added this later on because I had an error when querying on location.coordinates
end

class Location
  include Mongoid::Document
  field :coordinates, type: Array
  index({coordinates: '2d'}, {unique: true})
  has_many :events
end

Теперь, если я создам Event со связанным местоположением

Location.create({coordinates: [40.7127837, -74.0059413]})
Event.create({name: "foo", location: Location.first})

Как я могу запросить события рядом с определенным местом? Я пробовал это:

Event.where('location.coordinates' => {'$near' => [40.7127837, -74.0059413], '$maxDistance' => 1000.fdiv(111.12)}).first

но он не возвращает никаких результатов, а

Location.where('coordinates' => {'$near' => [40.7127837, -74.0059413], '$maxDistance' => 1000.fdiv(111.12)}).first

возвращает объект Location, созданный ранее.

Что я делаю неправильно?


  • я не использовал ruby, см. здесь, как сделать запрос NearSphere с монго docs.mongodb.org/manual/reference/operator/query/nearSphere. $near и $nearSphere разные. Максимальное расстояние должно быть в метрах. что означает 1000.fdiv(111.12)? 09.12.2015
  • Из здесь 1000.fdiv(111.12) должен преобразовывать км в градусы (то есть 1000 км в градусах). Я отредактировал свой вопрос, на самом деле $near работает, если я напрямую запрашиваю модель Location, поэтому я думаю, что это больше связано с монгоидом... 09.12.2015
  • градусы или радианы? извините, я не владею синтаксисом руби, но монго не поддерживает значения градусов, это должны быть радианы. Алгоритм $nearSphere вычисляет расстояние как сферу, в то время как $near вычисляет просто как плоскость. Для расчетов геолокации $nearSphere даст вам точные результаты. 09.12.2015

Ответы:


1

Это выглядит как нетерпеливая проблема с загрузкой для меня. Вы пробовали .includes(:location)

Event.includes(:location).where('location.coordinates' => {'$near' => [40.7127837, -74.0059413], '$maxDistance' => 1000.fdiv(111.12)}).first

Раньше я работал с монгоидом, но не могу понять, нужно ли это, и какие версии. Нетерпеливая загрузка включена по умолчанию на всех моделях в некоторых версиях, и в более старых версиях необходимо установить карту идентификации файла конфигурации, но в версии 4 этого не было.

09.12.2015
  • Я использую Mongoid 5, пробовал с includes, но безрезультатно. 10.12.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..