我想在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)。如何存储这类数据是否有任何有用的技术/麻烦实践?
谢谢
答案 0 :(得分:0)
您在坐标上有地理空间索引吗?
https://docs.mongodb.com/manual/applications/geospatial-indexes/
语法如下:
db.collection.createIndex( { <location field> : "2dsphere" } )
然后,您可以快速检索信息,并通过一次查询返回结果。