MongoDB 中 geoNear 命令使用技巧分享

阅读时长 5 分钟读完

如果你正在开发一个涉及地理位置的应用程序,那么 MongoDB 的 GeoNear 命令将会是你的得力助手。GeoNear 命令可以用来查找附近的位置,以及计算距离和排序结果。在本文中,我们将探讨 MongoDB 中 GeoNear 命令的使用技巧,并提供具体的示例代码来帮助您更好地理解。

GeoNear 命令是什么?

GeoNear 命令是 MongoDB 中用于查询附近位置的命令。它使用了 MongoDB 中的地理空间索引(geospatial index)来实现。在使用 GeoNear 命令之前,您需要先在需要查询的集合上创建一个地理空间索引。MongoDB 中支持的地理空间索引有两种类型:2dsphere 和 2d。

2dsphere 索引适用于球面的地理物体,比如地球表面的地点。而 2d 索引则适用于平面的地理物体,比如一张地图上的地点。

在创建地理空间索引之后,您就可以使用 GeoNear 命令来搜索附近的位置了。GeoNear 命令不仅可以返回附近的位置,还可以返回每个位置与查询点之间的距离,以及按距离排序的结果集。

创建地理空间索引

在使用 GeoNear 命令之前,我们需要在需要查询的集合上创建地理空间索引。以下是创建 2dsphere 索引和 2d 索引的示例代码。

2dsphere 索引

在上面的代码中,"location" 是需要建立索引的地理坐标点字段。执行以上代码之后,MongoDB 将在 "location" 字段上创建 2dsphere 索引。

2d 索引

在上面的代码中,"location" 是需要建立索引的地理坐标点字段。执行以上代码之后,MongoDB 将在 "location" 字段上创建 2d 索引。

使用 GeoNear 命令

接下来,我们将介绍如何使用 GeoNear 命令来查找附近位置,并返回每个位置与查询点之间的距离和按距离排序的结果集。

以下是一个简单的 GeoNear 命令示例:

-- -------------------- ---- -------
---------------------
  -
    --------- -
       ----- - ----- -------- ------------ - --------- - --------- - --
       -------------- -----------
       ---------- ----
    -
  -
--
展开代码

在上面的代码中,$geoNear 是 MongoDb 中的聚合操作符,它在一个集合中进行条件筛选,排序等操作。以下是 GeoNear 命令需要使用的参数:

  • near:查询点的地理坐标。在上面的示例中,我们使用了一个包含了经度(-73.99279)和纬度(40.719296)的数组。
  • distanceField:用于存储每个位置与查询点之间距离的字段名。在上面的示例中,我们将每个位置与查询点之间的距离存储在了 "distance" 字段中。
  • spherical:指定是否采用球面空间计算。在上面的示例中,我们将 spherical 属性设置为 true,以启用球面空间计算。

GeoNear 命令的返回结果

当执行 GeoNear 命令时,它将返回一个包含了查询结果的文档数组。每个文档包含了以下字段:

  • _id:被查询的文档的 ID。
  • location:被查询的文档的地理坐标。
  • distance:被查询的文档与查询点之间的距离。
  • other fields:文档中除了 _id 和 location 以外的字段。

以下是一个包含了距查询点最近的两个位置的示例返回结果:

-- -------------------- ---- -------
-
  -
    ------ -------------------------------------
    ----------- - ------- -------- -------------- - ----------- --------- - --
    ----------- -------------------
    ------- -------- ------
    ---------- -----------
  --
  -
    ------ -------------------------------------
    ----------- - ------- -------- -------------- - ----------- --------- - --
    ----------- -------------------
    ------- -------- ------
    ---------- -----------
  -
-
展开代码

在上面的示例中,我们执行了一个 GeoNear 命令来查找离给定查询点最近的两个位置。查询结果包含了每个位置的 ID、地理坐标、距离以及其它一些字段(比如 "name" 和 "borough")。

总结

GeoNear 命令是 MongoDB 中一个强大的地理空间查询工具。在本文中,我们介绍了如何使用 GeoNear 命令来查询附近位置并排序距离。同时我们也介绍了如何创建地理空间索引和 GeoNear 命令的返回结果。我们相信这些技巧将会对您在开发地理位置相关应用时很有帮助。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65a1a89fadd4f0e0ff9b2caf

纠错
反馈

纠错反馈