用于位置阵列的mongodb geoNear

用于位置阵列的mongodb geoNear,mongodb,indexing,geolocation,mongodb-query,Mongodb,Indexing,Geolocation,Mongodb Query,我有这样一份文件: {positions: [ [0.1, 0.1], [0.2, 0.2] ]} {positions: {$near: [0.11, 0.11]} } 我想查询点[0.11,0.11]附近的文档。大概是这样的: {positions: [ [0.1, 0.1], [0.2, 0.2] ]} {positions: {$near: [0.11, 0.11]} } 如何添加二维索引以及如何查询?谢谢。虽然您的示例数据不是最好的,但索引创建和查询非常简单。要创建二维索引,只

我有这样一份文件:

{positions: [ [0.1, 0.1], [0.2, 0.2] ]}
{positions: {$near: [0.11, 0.11]} }
我想查询点
[0.11,0.11]
附近的文档。大概是这样的:

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

如何添加二维索引以及如何查询?谢谢。

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

db.collection.ensureIndex( { positions: "2d" } )
数组中数组的数据格式非常有效。查询很简单,而且基本上具有以下语法:

db.collection.find({ positions: {$near: [-75, 111]} })
唯一需要注意的是,在不进行任何投影的情况下,您将返回整个文档,包括整个位置数组,并且该结果将对数组中的任何匹配位置重复

作为新手,您最好阅读一下MongoDB geospacial功能,并决定哪种解决方案最适合您的情况。以下链接是一个很好的起点:

MongoDB手册包括不同索引类型的索引。对于
2d
索引,请注意坐标顺序必须始终为
[经度,纬度]
。如果您的值看起来不像long/lat,那么如果您使用的是不同的坐标系,您可能希望这样做,因为默认范围是-180到180(即假定为long/lat)。