在 mongo 上苦苦挣扎的地理空间查询

Posted

技术标签:

【中文标题】在 mongo 上苦苦挣扎的地理空间查询【英文标题】:struggling with geospatial queries on mongo 【发布时间】:2022-01-17 07:24:12 【问题描述】:

几天来,我一直在努力让查询正常工作。目前我的模型如下所示:

class Geojson
  include Mongoid::Document

  field :type, type: String, default: 'Point'
  field :coordinates, type: Array

  index(coordinates: "2dsphere",  bits: 12) 
end

以下查询返回 nil:

Geojson.find(:coordinates => "$nearSphere" => [-70.1197340629727, 4.67071244438])

这些是我数据库中的当前实例:

[#<Geojson _id: 61b7b21a9eb0c9ef0aa5626d, type: "Point", coordinates: [-74.13041168951031, 4.6638117]>,
#<Geojson _id: 61b7b2619eb0c9ef0aa5626e, type: "Point", coordinates: [-74.1213041168951, 4.5638117]>] 

我可以在 mongosh 上毫无问题地查询类似的案例,但是我不确定直接在 rails 上做的错误在哪里。

【问题讨论】:

【参考方案1】:

我终于设法通过以下方式使其工作:(对于 2d 球体索引)

Geojson.where(:coordinates => "$nearSphere" => [long, lat]).to_a

其中经度和纬度是接收到的参数。

【讨论】:

以上是关于在 mongo 上苦苦挣扎的地理空间查询的主要内容,如果未能解决你的问题,请参考以下文章

mongoDb地理空间索引和查询

MongoDB中是不是有类似反向地理空间查询的东西?

地理空间索引的划分查询

盒子地理空间查询中的猫鼬无法正常工作

MongoDB系列五(地理空间索引与查询).

使用 Doctrine MongoDB ODM 进行地理空间查询