首页 > 数据库 >MongoDB 位置查询报错 planner returned error: unable to find index for $geoNear query

MongoDB 位置查询报错 planner returned error: unable to find index for $geoNear query

时间:2023-08-09 17:15:38浏览次数:66  
标签:index planner 查询 索引 报错 user sql 2dsphere find

 

执行查询语句,使用 $nearSphere

/**
* 1千米 = 0.6213712英里 15千米 = 9.3205679英里 查询通过除以地球的大约赤道半径(3963.2英里)将距离转换为弧度。
* ①:如果是第一页,查询50公里内的老朋友店铺,
* ②:查询15公里内所以的置顶服务商家,然后根据分页参数来截取
* ③:0.00156785=0.6213712*10/3963.2(所以下列sql查询的结果是以经纬度[106.653412, 26.696467]为圆心半径10公里以内的所有user信息)
 */
/sql语句
db.getCollection('user').find({ "location": { "$nearSphere": {"$geometry": { "type": "Point", coordinates: [106.653412, 26.696467] },"$maxDistance":  0.00156785 } } })

查询报错 planner returned error: unable to find index for $geoNear query

 

解决方案
这是因为当前查询的是MongoDB的GeoJSON 对象,查询中使用了地理空间查询运算符:$nearSphere, 而使用它则需要地理空间索引,而定义为 GeoJSON 点的位置数据的索引为2dsphere索引。

故首先创建 2dsphere 类型的索引,如下语句:

//执行如下sql,给我user表的位置字段"location"创建 2dsphere 类型的索引
db.user.createIndex({"location":"2dsphere"});

 添加索引后即可通过上面的位置查询sql成功查询出结果集

标签:index,planner,查询,索引,报错,user,sql,2dsphere,find
From: https://www.cnblogs.com/luolei0120/p/17617271.html

相关文章

  • Hyper-V安装Win11报错
    安装刚开始就是无法安装,不符合要求安装时我选的是Generation2,因此需要进入虚拟机配置选择打开TPM,CPU:2,RAM也检查一下......
  • SpringBoot启动项目失败但不报错
    新建的SpringBoot项目,点击启动,项目没有启动成功,但是不报错。如下:._________/\\/___'_____(_)______\\\\(()\___|'_|'_||'_\/_`|\\\\\\/___)||_)|||||||(_||))))'|____......
  • Arduino IDE踩坑记——自动编译已删除的文件导致报错
    前段时间因为手头上有个小项目需要基于esp8266开发,所以用上了以简单无脑配置著称的ArduinoIDE,刚开始尝试的时候,在项目目录下创建了几个源文件,ArduinoIDE也很贴心地自动导入了,写了几行之后,觉得这样写不太对,于是又删掉了这几个源文件。在ArduinoIDE的界面中这几个源文件也消失了......
  • allure 系统有权限不能运行报错的解决方法
    当出现"FileC:\Users\Administrator\AppData\Roaming\npm\allure.ps1cannotbeloadedbecauserunningscriptsisdisabledonthissystem"的错误消息时,表示你的系统禁止执行脚本文件。为了解决这个问题,你可以尝试执行以下步骤:以管理员身份运行命令提示符或PowerShell:右......
  • vue-element-admin的安装以及安装报错处理
    一、vue-element-admin git地址https://github.com/PanJiaChen/vue-element-admin 二、分支master:主分支,(纯英文)il8n:中英文切换分支 三、npminstall安装报错原因: tui-editor 已更新,故造成错误,修改如下 四、 安装报错处理1、修改package.json文件......
  • 【随手记】Mybatis报错 错误信息:ORA-00911: 无效字符
    注意@param注解是属于哪个包的这个有的时候会有影响接收不到参数xml里面不要加分号查了半天Bug最后发现是xml里面的sql语句后面加了个;,删掉就好了。......
  • yum update更新报错 Transaction Check Error 解决方法
    yumupdate更新报错TransactionCheckError解决方法yumupdate引起错误TransactionCheckError的原因很多,要根据错误概要去判断具体原因。错误现象:报错内容:file/usr/share/man/man1/gtk-query-immodules-2.0.1.gzfrominstallofgtk2-2.24.31-1.el7.x86_64conflicts......
  • switch-case 和 if-else 申明相同变量时报错
    switch-case和if-else在分支处理上的不同switchcase不同分支里申明同一个变量会报错,因为swicthcase不同的分支仍处于同一个作用域scope。但是ifelse却没有注意的问题。//Cannotredeclareblock-scopedvariable'a'.switch(num){case1:consta='a'ret......
  • html页面突然啥都不显示,也不报错
     在进行调试的时候,突然发现HTML页面不显示了,打开控制台的时候也没有显示什么报错,原来是手欠的打了断点导致的!!!!!所以才不报错也不显示,这其实是页面还没加载完成就被截断了,所以这样,取消断点就行!!......
  • minio报错:Unable to use the drive /data: Drive /data: found backend type fs, expe
    docker安装minio,minio是最新的,使用命令:dockerpullminio/minio如下:启动命令:dockerrun-d-p9000:9000-p9001:9001--nameminio1-v/home/minio/data:/data-v/home/minio/config:/root/.minio-e"MINIO_ROOT_USER=admin"-e"MINIO_ROOT_PASSWORD=123456&quo......