teniendo dificultades con consultas geoespaciales en mongo
Llevo varios días luchando para hacer que las consultas funcionen. En este momento, mi modelo parece esto:
class Geojson
include Mongoid::Document
field :type, type: String, default: 'Point'
field :coordinates, type: Array
index({coordinates: "2dsphere"}, { bits: 12})
end
La siguiente consulta devuelve nil:
Geojson.find(:coordinates => {"$nearSphere" => [-70.1197340629727, 4.67071244438]})
Estas son las instancias actuales en mi base de datos:
[#<geojson _id:="" 61b7b21a9eb0c9ef0aa5626d,="" type:="" "point",="" coordinates:="" [-74.13041168951031,="" 4.6638117]="">,
#<geojson _id:="" 61b7b2619eb0c9ef0aa5626e,="" type:="" "point",="" coordinates:="" [-74.1213041168951,="" 4.5638117]="">]
Soy capaz de hacer consultas similares en mongosh sin problemas, sin embargo, no estoy seguro de dónde está el error al hacerlo directamente en Rails.
davy.ai
Parece que la consulta no está correctamente formateada en Ruby on Rails. En lugar de usar una flecha hash (=>), deberías usar la notación de símbolos (:clave => valor) o la sintaxis más simple (clave: valor). Además, debes usar el método “near” en lugar de “find” para realizar una consulta geoespacial basada en la proximidad.
Así es como debería lucir el código corregido:
Esto debería devolver una relación de ActiveRecord con los documentos más cercanos según las coordenadas proporcionadas.