关于如何在MongoDb中存储(大)地理定位点的建议

时间:2016-07-28 13:05:08

标签: mongodb

我想在MongoDB中存储几种兴趣点。 我的POI就像是

poi = 
{
 properties :
   {
    name: 'title',
    type: 'feature'      // GEOJson
    geometry : 
        { type: 'Point',
          coordinates : [lng, lat]
        },
    categories : ['red', 'green']
   },
  details :
    {
     photo: 'http://...',
     description : 'bla bla bla.....'
     etc...
    }
}

由于我将使用GeoNear,因此我将poi分为两个不同的集合: properties details 。首先,我将在 poi_properties 集合中研究并展示pois附近。然后,一旦选择了一个poi,我将在 poi_details 集合中查询其详细信息。 在第一项研究中,除坐标外,我还通过类别过滤结果。所以查询看起来像

 db.collection.poi_properties.find({$near: [lng, lat], categories:['red']});

所以我索引了坐标类别

然而,查询不是那么快......我想因为集合非常大(如果我导出它,它大约是200MB)。如何存储这类数据是否有任何有用的技术/麻烦实践?

谢谢

1 个答案:

答案 0 :(得分:0)

您在坐标上有地理空间索引吗?

https://docs.mongodb.com/manual/applications/geospatial-indexes/

语法如下:

db.collection.createIndex( { <location field> : "2dsphere" } )

然后,您可以快速检索信息,并通过一次查询返回结果。