Mongoose 中使用 $near 和 $geoWithin 查询地理位置信息的方法

阅读时长 4 分钟读完

简介

在 Web 开发中,很多应用都需要用到地理位置信息。对于一些需要基于这些信息进行查询和分析的场合,比如找出附近的餐馆、搜索车辆轨迹等等,就需要用到地理位置的相关查询方法。在 Mongoose 中,可以利用 $near 和 $geoWithin 查询地理位置信息。

$near

$near 操作符可以返回一个按照距离排序的结果。它需要一个值为 GeoJSON 对象的键以及一个可选的最大距离(单位为度)。

具体使用方法如下:

其中 location 是存储地理信息的字段,longitude 和 latitude 分别是地点的经纬度,distance 则是最大距离,单位为度。

下面是一个示例代码:

-- -------------------- ---- -------
--- -------- - --------------------
--- ------ - ----------------

--- ----------- - --- --------
  ----- -------
  --------- -
    ----- - ----- ------ --
    ------------ --
  -
---

------------------- --------- ---------- ---

--- ----- - ----------------------- -------------

-- ----- -- ------
------------ --------- - ------ ---------- ------- ------------- -- - -- ------------- ------- -
  -- ----- - ------ ------------------- -
  --------------------
---

在上面的示例代码中,我们定义了一个地点(place)的 Schema,并在其上建立名为 location 的索引(index)。在查询时,我们将附近地点的经纬度传入 $near 这个操作符中,并设定最大距离为 10 度。这样,就可以返回地点列表,且按距离排序。

需要注意的是,在使用 $near 请求时,必须要在 location 字段上使用 2dsphere 索引。

$geoWithin

$geoWithin 操作符则是在指定的区域内返回文档。它需要一个值为 GeoJSON 对象的键,以及一个表示区域的 GeoJSON 对象。

具体使用方法如下:

在上述代码中,geoJsonGeometry 表示的是要进行查询的地理区域,能用 GeoJSON 表示出来的任何形状都可以作为该字段的值。

下面是一个示例代码:

-- -------------------- ---- -------
--- -------- - --------------------
--- ------ - ----------------

--- ----------- - --- --------
  ----- -------
  --------- -
    ----- - ----- ------ --
    ------------ --
  -
---

------------------- --------- ---------- ---

--- ----- - ----------------------- -------------

-- -------------
------------
  --------- -
    ----------- -
      ---------- -
        ----- ----------
        ------------ -
          -
            ---------- -------
            ---------- -------
            -------- -------
            -------- -------
            ---------- ------
          -
        -
      -
    -
  -
-- ------------- ------- -
  -- ----- - ------ ------------------- -
  --------------------
---

在上面的示例代码中,我们将要查询的区域表示为一个包含多边形的 GeoJSON 对象,并将其传入 $geoWithin 操作符中。这样,就可以找到位于多边形区域内的地点。

总结

在本文中,我们介绍了 Mongoose 中使用 $near 和 $geoWithin 查询地理位置信息的方法。这些方法在 Web 开发中应用广泛,能够帮助我们方便地查询和分析地理位置信息。同时,我们也给出了相应的示例代码,用于指导读者更好地理解这些查询操作的具体用法。

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

纠错
反馈