mongodb - 使用地理空间索引查询源和目的地 mongodb mongomapper

标签 mongodb ruby-on-rails-3.2 geospatial mongomapper

我的 mongodb 集合中有名为 Flight 的源字段和目标字段。这两个字段均按地理空间索引并以经纬度格式编写。我正在使用 mongomapper 从 Rails Controller 查询它。

我想编写如下查询。

Result= Flight.where(:source => {'$near' =>  location_src} , :destination => {'$near' => location_dest} )

其中location_src和location_dest是经纬度格式的GUI输入。

但是,当我尝试通过编写 Result.firstResult.all 访问结果时,它说 Mongo::OperationFailure:不能有 2 个特殊字段

任何人都可以建议我解决方法吗?

亲切的问候, 阿姆里什。

最佳答案

我找到了一个简单的解决方法,它可以满足我的目的,并且可能对面临类似情况的人有所帮助。

虽然mongodb不支持同时对多个字段进行地理空间查询,但它仍然支持同时对多个字段进行地理空间索引。因此,我们将依次对这两个字段运行查询,如下所示。

  • start_place:起始地点的名称
  • start_place_loc:起始位置的坐标(索引地理空间字段)
  • end_place:目的地名称
  • end_place_loc:目标位置的坐标(索引地理空间字段)

以下是示例代码。

tmp=Flight.distinct(:start_place,:start_place_loc => {'$near' =>  location_src} )

Result=Flight.where(:start_place_loc => {'$near' =>  location_src} , :start_place => {'$in' => tmp})

此外,还需要根据自己的要求设置 '$maxDistance' => "value"。

关于mongodb - 使用地理空间索引查询源和目的地 mongodb mongomapper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12509013/

相关文章:

mongodb - 首先使用简单键的地理空间索引

mongodb如何在聚合查询中应用分页和照片总数

javascript - Ruby on Rails3.2 中的 javascript 文件中的 Sprockets::EncodingError

entity-framework - 从 DbGeography 点的集合创建 DbGeography 多边形

node.js - Mongoose promise 和 sonarqube

node.js - 在 MongoDB 文档集合中查找对象数组内的元素

jquery - 如何使用rails 3在jQuery ajax成功方法上渲染部分

javascript - 将值从 JQuery 传递到我的模型并更新数据库

mysql - 经纬度 MySQL 字段类型

geospatial - 多边形顶点 - 顺时针或逆时针