【问题标题】:Which index should I use for $geoWithin searching?我应该使用哪个索引进行 $geoWithin 搜索?
【发布时间】:2015-05-25 15:59:37
【问题描述】:

我正在使用以下条件按位置查询文档

db.collection.find({
    "location": {
        "$geoWithin": {
            "$box": [
                [165.8694369, -52.61941849999999],
                [-175.831536, -29.2313419]
            ]
        }
    }
});

2d2dsphere 应该为位置字段使用哪种索引类型?

【问题讨论】:

    标签: mongodb indexing mongoose mongodb-query geospatial


    【解决方案1】:

    引用documentation

    查询使用平面(平面)几何计算距离。

    在 2.2.3 版中更改:应用程序可以在没有地理空间索引的情况下使用 $box。但是,地理空间索引支持比未索引的等价物更快的查询。在 2.2.3 之前,地理空间索引必须存在于保存坐标的字段上,然后才能使用任何地理空间查询运算符。

    只有二维地理空间索引支持 $box。


    球形

    要计算类地球球体上的几何形状,请将您的位置数据存储在球面上并使用 2dsphere 索引。

    将您的位置数据存储为具有此坐标轴顺序的 GeoJSON 对象:经度、纬度。 GeoJSON 的坐标参考系统使用 WGS84 基准。


    要计算欧几里得平面上的距离,请将您的位置数据存储为旧坐标对并使用二维索引。

    【讨论】:

    • 感谢您的回复。但是 $box 只是一个示例,因此我可以将 $geometry 与 Poligon 一起使用
    • @Erik 你可能需要阅读this
    • 感谢您的参考,但我还不明白应该使用平面还是球形来进行查询?
    • @Erik 在我的回答中添加了更多信息
    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 2010-12-28
    • 2011-02-22
    • 2010-11-27
    • 2010-11-30
    • 2011-05-08
    • 1970-01-01
    • 2015-07-31
    相关资源
    最近更新 更多