问题标签 [geonear]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
106 浏览

mongodb - 我可以使用 MongoDB 地理空间查询来查找最近的 LineString 到点吗?

我有一组 geoJSON LineString 对象,需要确定哪个最接近某个点。我对 Mongo DB 没有太多经验,但我用它$geoNear来找到最近的点。有没有办法让它适应 LineStrings 的集合?

示例集合:

我想搜索此集合以确定哪条线最接近点 [-85.55, 31.77]。这应该返回第三行(下图中的蓝线)。有没有办法在 MongoDB 中有效地做到这一点?

阴谋

0 投票
0 回答
24 浏览

mongodb - .count 聚合显着减慢执行时间

我正在重构一些旧代码以希望加快速度并使信息更安全。为了做到这一点,我尝试使用 MongoDB 聚合框架让所有用户靠近特定位置。最初,这是通过在前端处理一些球面计算来解决的,但这样做会将lat, lng每个用户的坐标发送回前端,这是不安全的,并且会不必要地暴露用户的位置数据。

我的解决方案是使用聚合框架并$geoNear获取附近用户的列表,然后还填充一个以英里为单位的距离字段distanceAway。在我尝试设置分页之前,一切都运行良好。该$count阶段大大减慢了路线的执行。

下面是我的代码:

此函数旨在返回用户列表(limit一次 20 个)并显示其他数据,例如跟踪前端的分页并发出后续请求totalPagescurrentPage

当我注释掉以下行时:

使用调用的路由的执行时间最长为 100 毫秒。当我在通话中评论它时,它会跳到大约 1100 毫秒。

有没有办法在不显着增加请求时间的情况下获得我正在寻找的分页数据?10X 似乎相当大。

0 投票
1 回答
352 浏览

node.js - MongoDB geoNear 不适用于某些坐标但适用于其他坐标

我正在使用 MongoDB 和用于 mongoDB 的 Node.js 驱动程序开发 API。其中一条路线接收坐标并调用聚合管道,该管道返回按接近度和许多其他因素排序的结果。管道第一步的代码是:

这一直很好,直到突然之间,它不是。现在它适用于某些坐标,而对于其他坐标则给出错误MongoError: invalid argument in geo near query: type。它可以正常工作{lat:0, long:0},可以正常工作,可以{lat:40.7411, long:-73.9897}正常工作{lat:46.68758191106798, long:2.8106467331441767},但是会出现错误{lat:37.785834, long:-122.406417}and {lat:47.643628614308675, long:-122.34560056016635}。我能找到的唯一模式是它讨厌西海岸的坐标。我已经验证了 2d-sphere 索引仍然存在于数据中。我试过将球形设置为假。我什至尝试删除所有数据,即使使用空集合仍然会得到相同的行为。我真的很困惑,为什么对 geonear 的论点对某些观点有效,而对其他观点无效。

编辑:我现在已经注释掉了除了以下代码之外的所有内容,并且我仍然得到相同的行为,其中一些坐标起作用而其他坐标给出MongoError: invalid argument in geo near query: type

0 投票
1 回答
56 浏览

mongodb - mongodb loopup管道geoNear

我遇到了一个问题,我试图在查找中获取当前文档附近的一些文档。如果我手动输入 lon/lat,则以下查询将起作用,但尝试使用“let”中的任何内容都会失败。如何在查找管道的 geoNear 中引用父文档的位置?

0 投票
0 回答
70 浏览

node.js - Mongodb $geonear 从加入两个集合:计算坐标距离

我们有 mongodb 集合

  1. 用户
  1. 用户连接

现在我们需要一个用户的所有连接。例如用户一 也有距离。所以结果会像

所以你能不能在这里帮助编写一个查询来使用 Mongodb $geonear 获取上面的数据。

0 投票
0 回答
103 浏览

mongodb - 使用 geonear 和模糊搜索文本 mongodb

我有以下查询

在酒店的集合中还有一个叫做'location'的字段,它的坐标如下

如何使用 geonear 和这个搜索查询只返回用户附近的酒店,并提供纬度、经度和距离。

我也试过这个查询

但上面的查询返回的结果甚至不在那个位置附近。它返回的结果与“搜索”在没有“附近”的情况下提供的结果相同。我已经为位置创建了“地理”索引,但它仍然不返回附近的酒店。

或者除了使用 geonear 和搜索之外还有其他方法吗?我从过去 2 天开始就在尝试,但我没有发现任何有用的东西。我也只想使用模糊文本搜索。请让我知道是否有办法解决这个问题?

0 投票
0 回答
14 浏览

java - $geoNear 查询花费大量时间返回结果

我要做什么:我们有一个数据库,该数据库存储运输车辆的 GPS 位置,该位置存储间隔 5 分钟内的数据。我想从特定的黄金地段获取半径内所有车辆的数据。我们使用的数据库是 MongoDB,因为它提供了可以解决我的目的的 geoNear 查询。

我应用 geoNear 查询通过 JAVA 从给定点的特定半径内从 MongoDB 获取该数据,但是当我对 geoNear 查询接收到的数据运行循环时,循环它需要 20 多秒。这是我想要做的,

我还尝试使用 $geoWithin 查询($geoWithin 现在已替换为 $within)

但是出现了一个错误:无法识别的管道阶段名称:'loc',我无法弄清楚。

请建议如何解决它。或者如何以更好的方式做到这一点。

0 投票
0 回答
31 浏览

node.js - $geoNear 仅在我给出 maxDistance = 100 * 1000 时给出结果;

我想要附近的律师名单,我使用了 MongoDB 聚合,但只有当我通过 maxDistance 大于 100 公里时它才会给出结果。如果我想设置 maxDistance = 10 * 1000; 那么它没有给出任何结果,但数据库中有可用的数据。

这是模型:

这是路线:

这是数据库内的记录:

在此处输入图像描述

这是我的邮递员:

在此处输入图像描述

如果我犯了任何错误,请纠正我。谢谢

0 投票
0 回答
20 浏览

mongodb - MongoDB - 在存储的文档之间使用 maxDistance $geoNear 而不在查询中指定坐标

假设在 mongodb 中有多个带有地理坐标的文档

  • {"_id" : .., "userID" : "1", "point: {"type" : "Point", "coordinates" : [ 8.8502715, 45.6114064 ]}}
  • {"_id" : .., "userID" : "1", "point: {"type" : "Point", "coordinates" : [ 8.8402715, 45.6214064 ]}}
  • {"_id" : .., "userID" : "2", "point: {"type" : "Point", "coordinates" : [ 8.8512715, 45.6124064 ]}} {"_id" : .., "userID" :“3”,“点:{“类型”:“点”,“坐标”:[8.8512715,45.6124064]}}

我想每 5 分钟运行一次测试,并让所有彼此相距 20 米的用户(因此应该忽略相同用户 ID 的点。它只会检查具有不同用户 ID 的文档之间的 maxDistance )。我可以运行任何查询来提供所有积分吗?如果没有,我是否应该检查不同的数据库来存储我将能够运行此类查询的点?

提前致谢?

0 投票
0 回答
20 浏览

node.js - Mongo Aggregate 使用 $geonear 和子文档表

我有两个文档集合,

  1. Products => productID , addressId (具有带地址表的 FK )
  2. 地址=> addressId,位置{类型:“点”,坐标:[72.01,32.94]}

现在我正在选择离我最近的产品,最大距离为 25KM

我写了一个查询,写在下面:-

根据上面的查询,我得到了结果,但我在 product 下得到了多个地址。

我的期望是:- 获取符合此条件的产品

请建议我如何做到这一点。