On this page
$near
在本页面
Definition
$near
- 指定一个geospatial查询从最近到最远返回文档的点。 $near运算符可以指定GeoJSON点或旧坐标点。
$near需要地理空间索引:
要指定GeoJSON点,$near运算符需要2dsphere索引并具有以下语法:
{
<location field>: {
$near: {
$geometry: {
type: "Point" ,
coordinates: [ <longitude> , <latitude> ]
},
$maxDistance: <distance in meters>,
$minDistance: <distance in meters>
}
}
}
如果指定纬度和经度坐标,请先列出 经度 ,然后列出 latitude :
有效的经度值在
-180
和180
之间(包括两端值)。有效的纬度值在
-90
和90
之间(包括两端值)。
指定GeoJSON点时,可以使用* optional * $minDistance和$maxDistance规范来限制$near结果,以米为单位:
- $minDistance将结果限制为距中心点至少*指定距离的那些文档。 $minDistance仅可用于2dsphere索引。
2.6 版的新功能。
- $maxDistance将结果限制为距中心点最多指定距离的那些文档。
{
$near: [ <x>, <y> ],
$maxDistance: <distance in radians>
}
指定旧版坐标时,您可以使用* optional * $maxDistance规范,以* radians *中的距离限制$near结果。 $maxDistance将结果限制为“最多”离中心点指定距离的那些文档。
Behavior
特殊索引限制
您不能将需要特殊geospatial index的$near运算符与需要另一个特殊索引的查询运算符或命令结合使用。例如,您不能将$near与$text查询结合使用。
分片集合限制
Sort Operation
$near按距离对文档进行排序。如果还为查询包括sort(),则sort()重新排序匹配的文档,从而有效地覆盖$near已经执行的排序操作。将sort()与地理空间查询一起使用时,请考虑使用$geoWithin运算符,该运算符不对文档进行排序,而不是$near。
See also
Examples
查询 GeoJSON 数据
Important
如果指定纬度和经度坐标,请先列出 经度 ,然后列出 latitude :
有效的经度值在
-180
和180
之间(包括两端值)。有效的纬度值在
-90
和90
之间(包括两端值)。
考虑具有2dsphere
索引的集合places
。
以下示例返回距指定的 GeoJSON 点至少1000
米,最多5000
米的文档,其排序方式为从最近到最远:
db.places.find(
{
location:
{ $near :
{
$geometry: { type: "Point", coordinates: [ -73.9667, 40.78 ] },
$minDistance: 1000,
$maxDistance: 5000
}
}
}
)
查询旧版坐标
Important
如果指定纬度和经度坐标,请先列出 经度 ,然后列出 latitude :
有效的经度值在
-180
和180
之间(包括两端值)。有效的纬度值在
-90
和90
之间(包括两端值)。
考虑具有2d
索引的集合legacy2d
。
下面的示例返回从指定的旧式坐标对到最大0.10
弧度的文档,从最近到最远排序:
db.legacy2d.find(
{ location : { $near : [ -73.9667, 40.78 ], $maxDistance: 0.10 } }
)