在mongoDB中进行Lat-Long处理

时间:2014-02-06 05:50:47

标签: mongodb

我使用MongoDB使用twitter API和php代码存储twitter的推文。 如何获取存在于MongoDB中的关于纬度和经度的推文的位置?

1 个答案:

答案 0 :(得分:1)

根据Twitter关于tweet fields的文档,coordinates字段是一个可以为空的GeoJSON对象。显然,并非所有的推文都会有坐标数据,所以你必须考虑到这种可能性。

方便的是,GeoJSON格式是MongoDB 2.4+用于其2dsphere geospatial indexes的格式。如果您存储来自Twitter的推文,您应该能够在coordinates字段上创建这样的索引,并让MongoDB相应地跟踪它。如果coordinates字段是null或者GeoJSON对象出于某种原因,我只是在存储之前从文档中删除该字段,因为如果您尝试索引无效的地理空间值,MongoDB会抱怨。 / p>

在早期版本的MongoDB中,使用了2d indexes,其中值是经度和纬度值的元组(按此顺序),或者是经度和纬度为唯一属性的对象(按此顺序) 。如果可能,我肯定会建议使用较新的2dsphere索引。

可以在this page找到所有MongoDB地理空间查询运算符的有用图表。这包括提及哪些查询支持2dsphere和传统的2d索引。

两篇有用的博客文章介绍了2dsphere索引:

后一篇文章是我自己的,并谈到使用GeoJSON PHP library我和Doctrine MongoDB一起写的。无论您是否想要使用Doctrine进行探索,GeoJSON库可能有助于在将coordinates字段存储到MongoDB之前验证它们。