fjb_mxcz 2018-03-22 07:22 采纳率: 0%
浏览 875
已结题

MongoDB中地理空间查询运算符相关问题

现在最新的MongoDB版本为3.6,根据官网上的描述图片说明 前三个貌似支持吃2d索引,现在官网建议是使用2dsphere,解决具体的业务,比如我们有一个区域查物的功能,这个区域可能是多边形,矩形或者圆形,那么如果我们的数据库表建立的是2dsphere 虽然也能查,但是其实是不走索引的,必须建立2d索引才行,有没有什么办法是我建立的是2dshpere索引,有相关的办法可以替代。

  • 写回答

1条回答

  • fjb_mxcz 2018-04-19 01:48
    关注

    针对查找指定范围内车辆信息的功能,一般的图形无非就是多边形,矩形,圆形,而我们可以认为矩形是一种特殊的多边形。
    直接使用的方法就是 geoWithin https://docs.mongodb.com/manual/reference/operator/query/geoWithin/
    6.1、geoWithin可以没有地理空间索引,但是也可以同时支持2d和2dsphere索引,geoWithin的超找范围支持到多边形,注意
    使用时第一个点必须和最后一个点一样,否则会报错。
    针对圆形,官网直接提供了centerSphere https://docs.mongodb.com/manual/reference/operator/query/centerSphere/
    centerSphere 可以没有地理空间索引,但是也可以同时支持2d和2dsphere索引
    使用centerSphere ,最后一个参数为弧度,计算方式为:
    英里/3963.2 公里/6,378.1
    https://docs.mongodb.com/manual/tutorial/calculate-distances-using-spherical-geometry-with-2d-geospatial-indexes/index.html

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog