如何在作为数组的字段上设置地理空间2dsphere索引?

时间:2013-05-29 21:53:29

标签: mongodb geospatial

我正在尝试在一个坐标数组的字段上使用地理空间2dsphere。

我有城市的区域,每个城市都有自己的区域。当我尝试做一个交叉路口时,我只测试myArea与特定城市的区域。因此,我不想将所有城市中的所有区域都放在同一个集合中。

因此,我的问题是,你如何设置它?

我的服务器是nodejs,我使用本机mongodb lib,如果它有帮助。

1 个答案:

答案 0 :(得分:1)

GeoJSON确实定义了MultiPoli数据类型,该数据类型已在recent releases of MongoDB中实现。如果您无法使用其中一个版本,则可以通过为一个集合中的每个城市创建文档以及与另一个集合中的城市相关联的每个Polygon的文档,同时存储原始城市的ID来解决此问题。

城市收藏:

{
    _id: ObjectId("51f67cfb20ea59dba539d9f8"),
    name: 'New York',
    ...
}

city_polys Collection

{
    city_id: ObjectId("51f67cfb20ea59dba539d9f8"),
    loc: {
            type: Polygon,
            coordinates: ...
    },
    ...
}

然后,您可以在city_poly的loc字段上创建一个2dsphere索引。