我的模型A包含以下字段:
field :location, type: Array
index( { location: '2d' }, { min: -180, max: 180 })
# Check if location is float
before_save :fix_location, if: :location_changed?
def fix_location
self.location = self.location.map(&:to_f)
end然后,我运行索引rake任务。
现在我有了[-4.430577206803733, 100.27785445050375]的模型
我想通过它的坐标查询这个模型,我使用模型的相同坐标:
loc = [-4.430577206803733, 100.27785445050375]
distance = 50 #km
models = A.where(location: {"$near" => loc, "$maxDistance" => distance.fdiv(111.12)})当我运行这段代码时,它不会返回任何内容。我改变了loc的值,这个值接近我的坐标,它仍然没有给出任何信息。
我错过了什么?
====更新====
我已将代码更改为:
models = A.where(location: {"$near" => {lng: 100.27785445050375, lat: -4.430577206803733}, "$maxDistance" => distance.fdiv(111.12)})仍然给我一个空数组
发布于 2015-07-28 09:36:16
我找到了解决办法。我只是忘了运行索引耙任务。
发布于 2015-07-27 07:40:11
您正在以纬度、经度格式存储位置坐标。MongoDB首先期望经度。
https://stackoverflow.com/questions/31645473
复制相似问题