简介
在 Web 开发中,很多应用都需要用到地理位置信息。对于一些需要基于这些信息进行查询和分析的场合,比如找出附近的餐馆、搜索车辆轨迹等等,就需要用到地理位置的相关查询方法。在 Mongoose 中,可以利用 $near 和 $geoWithin 查询地理位置信息。
$near
$near 操作符可以返回一个按照距离排序的结果。它需要一个值为 GeoJSON 对象的键以及一个可选的最大距离(单位为度)。
具体使用方法如下:
Model.find({ location: { $near: [longitude, latitude], $maxDistance: distance } }, callback);
其中 location 是存储地理信息的字段,longitude 和 latitude 分别是地点的经纬度,distance 则是最大距离,单位为度。
下面是一个示例代码:
-- -------------------- ---- ------- --- -------- - -------------------- --- ------ - ---------------- --- ----------- - --- -------- ----- ------- --------- - ----- - ----- ------ -- ------------ -- - --- ------------------- --------- ---------- --- --- ----- - ----------------------- ------------- -- ----- -- ------ ------------ --------- - ------ ---------- ------- ------------- -- - -- ------------- ------- - -- ----- - ------ ------------------- - -------------------- ---
在上面的示例代码中,我们定义了一个地点(place)的 Schema,并在其上建立名为 location 的索引(index)。在查询时,我们将附近地点的经纬度传入 $near 这个操作符中,并设定最大距离为 10 度。这样,就可以返回地点列表,且按距离排序。
需要注意的是,在使用 $near 请求时,必须要在 location 字段上使用 2dsphere 索引。
$geoWithin
$geoWithin 操作符则是在指定的区域内返回文档。它需要一个值为 GeoJSON 对象的键,以及一个表示区域的 GeoJSON 对象。
具体使用方法如下:
Model.find({ location: { $geoWithin: { $geometry: geoJsonGeometry } } }, callback);
在上述代码中,geoJsonGeometry 表示的是要进行查询的地理区域,能用 GeoJSON 表示出来的任何形状都可以作为该字段的值。
下面是一个示例代码:
-- -------------------- ---- ------- --- -------- - -------------------- --- ------ - ---------------- --- ----------- - --- -------- ----- ------- --------- - ----- - ----- ------ -- ------------ -- - --- ------------------- --------- ---------- --- --- ----- - ----------------------- ------------- -- ------------- ------------ --------- - ----------- - ---------- - ----- ---------- ------------ - - ---------- ------- ---------- ------- -------- ------- -------- ------- ---------- ------ - - - - - -- ------------- ------- - -- ----- - ------ ------------------- - -------------------- ---
在上面的示例代码中,我们将要查询的区域表示为一个包含多边形的 GeoJSON 对象,并将其传入 $geoWithin 操作符中。这样,就可以找到位于多边形区域内的地点。
总结
在本文中,我们介绍了 Mongoose 中使用 $near 和 $geoWithin 查询地理位置信息的方法。这些方法在 Web 开发中应用广泛,能够帮助我们方便地查询和分析地理位置信息。同时,我们也给出了相应的示例代码,用于指导读者更好地理解这些查询操作的具体用法。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64eb4693f6b2d6eab35e42f0