我有这样的文件:
{positions: [ [0.1, 0.1], [0.2, 0.2] ]}
我想查询点[0.11, 0.11]
附近的文档。像这样:
{positions: {$near: [0.11, 0.11]} }
如何添加2d索引以及如何查询?感谢。
答案 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