查询一个2d索引
在本页面
下面的部分描述了 2d 索引支持的查询。
在平面上定义的形状内的点
要选择平面上给定形状中的所有旧坐标对,请使用$geoWithin
操作符和一个形状操作符。使用以下语法:
下面查询由左下角的[0,0]
和右上角的[100,100]
定义的矩形内的文档。
下面查询以[-74,40.74]
为圆心,半径为10
的圆内的文档:
关于每种形状的语法和示例,请看下面:
$center
(defines a circle)
球体上定义的圆内的点
由于遗留的原因,MongoDB支持平面“2d”索引上的基本球形查询。通常,球形计算应该使用2dsphere
索引,如2dsphere索引中所述。
要在球体的“球冠”中查询传统坐标对,请$geoWithin
与$centerSphere
运算符一起使用。指定一个包含以下内容的数组:
圆心的网格坐标
圆的半径,以弧度为单位。要计算弧度,请参见 使用球面几何计算距离。
使用以下语法:
下面的示例查询返回以经度 88 W 和纬度 30 N 为半径的10英里范围内的所有文档。这个例子通过将距离除以地球赤道半径3963.2英里来将距离转换为弧度:
接近平面上的一点
接近查询返回最接近定义点的遗留坐标对,并按距离对结果排序。使用$near
操作符。操作符需要一个 2d 索引。
$near
操作符使用以下语法:
例如,请参见$near
。
在平面上的精确匹配
不能使用2d索引返回坐标对的精确匹配。在存储坐标的字段上使用升序或降序标量索引,以返回准确的匹配。
在下面的例子中,find()
操作将返回一个精确匹配的位置,如果你有一个{'loc': 1}
索引:
该查询将返回值为[,
]
的所有文档。
最后更新于