mongodb geoNear用于位置数组

时间:2014-02-02 02:55:43

标签: mongodb indexing geolocation mongodb-query

我有这样的文件:

{positions: [ [0.1, 0.1], [0.2, 0.2] ]}

我想查询点[0.11, 0.11]附近的文档。像这样:

{positions: {$near: [0.11, 0.11]} }

如何添加2d索引以及如何查询?感谢。

1 个答案:

答案 0 :(得分:2)

虽然您的示例数据不是最好的,但索引创建和查询非常简单。要创建2d索引,只需要以下命令:

db.collection.ensureIndex( { positions: "2d" } )

数组中数组的数据格式非常有效。查询很简单,基本上你也有语法:

db.collection.find({ positions: {$near: [-75, 111]} })

唯一需要注意的是,如果不进行任何投影,您将获得整个文档,包括整个位置数组,并且对于数组中的任何匹配位置将重复此结果。

对此不熟悉,您最好对MongoDB geospacial功能进行一些阅读,并就哪种解决方案最适合您的情况做出一些决定。以下链接是一个很好的起点:

http://docs.mongodb.org/manual/core/geospatial-indexes/#store-location-data

http://docs.mongodb.org/manual/administration/indexes-geo/