1

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

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

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

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

4

1 回答 1

1

GeoJSON 确实定义了MultiPoli数据类型,该数据类型已在最近的 MongoDB 版本中实现。如果您不能使用其中一个版本,您可以通过为一个集合中的每个城市创建一个文档,并为与另一个集合中的一个城市相关联的每个多边形创建一个文档,同时存储原始城市的 id 来解决问题。

IE

城市收藏:

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

city_polys 集合

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

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

于 2013-07-29T14:43:07.183 回答