问题标签 [2dsphere]

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 投票
2 回答
914 浏览

mongodb - Mongodb找到距离较近的用户点

我们在 mongodb 数据库中查找距离较近的用户点有问题。我们的主要问题是我们不能聚合近点和距离。我们在以下查询中使用了 $geoWithin:

db.users.find({ location: { $geoWithin: { $centerSphere: [ [ 51.410608, 35.744042 ], 2/6378.1 ] } } }).sort({"user.lastActivity":-1}).limit(100 )

此查询在 0.005 秒内从 500204 条记录中返回 100 条记录。

我们还通过以下查询使用了 $nearSphere:

db.users.find({ location: { $nearSphere: { $geometry: { type: "Point", 坐标: [ 51.410608, 35.744042 ] }, $maxDistance: 2000 } } }).sort({"user.lastActivity" :-1}).limit(100)

此查询在 8.486 秒内从 500204 条记录中返回 100 条记录。

我们还使用 geoNear 和以下查询:

db.runCommand( { geoNear: "users", near: { type: "Point" , 坐标: [ 51.410608, 35.744042 ]},spherical: true , "limit": 100, "maxDistance": 2000 } )

此查询在 6.215 秒内从 500204 条记录中返回 100 条记录。此查询找到距离较近的点,但执行需要很长时间。

我们在 users.locations 字段上添加索引 2dsphere。

1) 请告诉我为什么$nearSphere 的执行时间比$nearSphere 多?2) 如何使用 $nearSphere 找到近点并计算返回记录距离?3)如何用更少的时间执行geoNear?

我们还在 1394018 记录上找到了 mysql 的近点。执行时间为 0.0011。这一次真是太棒了。

选择 st_distance_sphere(fld_geom, point(35.744042,51.410608)) 作为与 testgeom 的距离,其中 st_distance_sphere(fld_geom, point(35.744042,51.410608))<=2000 限制 100

我认为 mysql spatial 比 mongodb spatial 非常强大。

0 投票
1 回答
1327 浏览

mongodb - 如何计算使用 MongoDB 行驶的总距离

我需要计算一组点之间的总距离。它们都有一个时间戳,可以让它们按正确的顺序排列。我只被允许使用 MongoDB。

样品采集:

我不知道如何以正确的顺序计算这些点之间的距离。

0 投票
1 回答
2335 浏览

python - 如何使用 pymongo 在 mongodb 中创建索引

我使用scrapy爬取数据并将其保存到mongodb,我想将2dsphere索引保存在mongodb中。

这是我的带有scrapy的pipelines.py文件

当我使用self.collection.create_index({"location": "2dsphere"})

它显示错误TypeError: if no direction is specified, key_or_list must be an instance of list

如果我尝试

没有错误了,但是我的 mongodb 下仍然没有任何索引location在此处输入图像描述

我想我遵守 GeoJson 格式。

当我使用时,有什么方法可以在 mongodb 中保存2dsphere索引scrapy?或者我应该只保存照片结构等数据并通过另一个服务器文件保存索引(如nodejs

任何帮助,将不胜感激。提前致谢。

根据Adam Harrison回应,我尝试将我的 mongodb 名称更改locationgeometry

import pymongo在我的 pipelines.py 文件中添加代码

并使用self.collection.create_index([("geometry", pymongo.GEOSPHERE)])

没有任何错误但仍然找不到下的索引geometry 在此处输入图像描述

0 投票
1 回答
1620 浏览

mongodb - 如何在猫鼬中创建地理索引

当我创建一个我应该拥有 2dsphere 索引的用户时,我尝试在我的集合中创建一个 2dsphere 索引。

我从这个答案中获取参考Create & Find GeoLocation in mongoose

在我的情况下,我使用的代码是这样的:

但是当我创建一个用户时,我没有看到任何 2dsphere 索引。 在此处输入图像描述

不知道是哪一步错了,希望有人能告诉我。

这是我的架构代码:

提前致谢。

0 投票
0 回答
653 浏览

mongodb - 如何在位置数组上创建 2DSphere 索引?

我有这个收藏:

但是当我尝试在地理位置上创建 2DSphere 索引时,db.myCollection.createIndex( {"geopositions": "2dsphere"} );我收到一个错误(无法提取地理键)。如何创建我的 2DSphere 索引?

0 投票
0 回答
305 浏览

node.js - nodejs - Mongoose 5.3.8 - GeoJSON 查询不起作用

我正在尝试使用 Mongoose 5.3.8 根据坐标点存储和查询位置,以便返回另一个点半径内的点。我已阅读文档并在以下部分中实现了 pointSchema + citySchema 示例: 使用 GeoJSON 数据如下所示

使用express端点,我使用以下代码和存储为的文档查询 mLab 实例:


上面的查询发现了错误:

我试图通过调用 .index() 在 LocationSchema 上添加索引

我还尝试通过以下方式向架构添加索引:

没有在架构上创建索引并且错误仍然存​​在。


我尝试了其他几种模式/查询组合,包括:

  1. Mongoose 地理空间搜索:距离不起作用- 2016 年 2 月 7 日
  2. Mongoose 地理空间查询 $near - 2018 年 4 月 10 日
  3. 无法找到 $geoNear 查询的索引 #6549 - 2018 年 5 月 31 日
  4. Net Ninja 的 GeoJSON 教程- 2017 年 3 月 27 日

尽管使用附近的坐标进行查询,但我没有让他们返回另一个点半径内的点。我不明白这是哪里出了问题。

  • 是否有一个地理空间查询的工作示例可以返回猫鼬 5.3.8中另一个点的半径内的点?

编辑:澄清问题

编辑:

让它工作。在连接到 mLab 实例的猫鼬选项中,我的选项如下:

autoIndex: false参数使得即使指定LocationSchema.index({ "location": "2dsphere" });. 为了解决这个问题,我不得不LocationSchema.options.autoIndex = true;出于某种原因添加。希望这可能对某人有所帮助。

0 投票
1 回答
348 浏览

mongodb - MongoDB 在对象数组中找到 $near

我开始使用 MongoDB API,因为我们使用的是 Azure Cosmos DB。在 MongoDB 中使用 $near 的示例,其基本结构为 {key:"A": localtion:{type:"Point", coordinates:[1,2]}},效果很好。问题是当我需要使用位置数组时。

我正在尝试执行此查询而没有结果。我在做什么坏事?

这些地方有很多当地人,这就是为什么我可以在里面放很多东西。

我希望有一个人可以帮助我。

干杯。

0 投票
0 回答
114 浏览

node.js - 规划器返回错误:无法找到 $geoNear 查询的索引

$nearSphere在查询中使用运算符并传递纬度和经度,但它返回

错误 - 无法找到 $geoNear 查询的索引

  • 我找到了几个解决方案,并在架构中使用了:

    scheduleRideSchema.index({ source: '2dsphere' });

  • 我正在使用 猫鼬

    source: { $nearSphere: { $geometry: { type: "Point", coordinates: sourceCord.coordinates }, $maxDistance: 4000 } }

    错误:计划程序返回错误:无法找到$geoNear查询的索引'

0 投票
1 回答
674 浏览

node.js - 找不到 $geoNear 查询的索引,代码:2,代号:'badValue'

这是我的架构

我的查询看起来像这样

每当我运行代码时,我都会收到此错误

PS:-我已经试过了User.index({location: "2dsphere"});

我在这里做错了什么?我已经解决了关于 Stack Overflow 的所有类似问题,但没有任何解决方案适合我。

0 投票
0 回答
171 浏览

node.js - Mongoose 2dsphere 未创建,手动索引部分工作

我是 MongoDB 和 Mongoose 的新手。我正在尝试创建一个索引位置字段的用户模型。

架构定义后,我尝试添加 100 个具有相同 lat、lng 的用户。现在,当我执行$geoNear它时,我会说错误'no geo indices for geoNear'。因此,我使用MongoDB Compass. 然后,当我尝试以下查询时,

在我创建的 100 条记录中,我只收到了几条记录。我无法理解为什么所有记录都没有出现,即使 lat 和 lng 相同。

我的问题如下

  1. 为什么userSchema.index({ location: "2dsphere" });不首先创建索引?
  2. 为什么即使所有 lat 和 lng 都相同,我也只收到很少的记录?