解決MongoDB?位置查詢(xún)報(bào)錯(cuò)planner?returned?error:?unable?to?find?index?for?$geoNear?query的問(wèn)題
MongoDB 位置查詢(xún)報(bào)錯(cuò)planner returned error: unable to find index for $geoNear query
執(zhí)行查詢(xún)語(yǔ)句,使用 $nearSphere
/** * 1千米 = 0.6213712英里 15千米 = 9.3205679英里 查詢(xún)通過(guò)除以地球的大約赤道半徑(3963.2英里)將距離轉(zhuǎn)換為弧度。 * ①:如果是第一頁(yè),查詢(xún)50公里內(nèi)的老朋友店鋪, * ②:查詢(xún)15公里內(nèi)所以的置頂服務(wù)商家,然后根據(jù)分頁(yè)參數(shù)來(lái)截取 * ③:0.00156785=0.6213712*10/3963.2(所以下列sql查詢(xún)的結(jié)果是以經(jīng)緯度[106.653412, 26.696467]為圓心半徑10公里以?xún)?nèi)的所有user信息)
/sql語(yǔ)句 db.getCollection('user').find({ "location": { "$nearSphere": {"$geometry": { "type": "Point", coordinates: [106.653412, 26.696467] },"$maxDistance": 0.00156785 } } })
查詢(xún)報(bào)錯(cuò) planner returned error: unable to find index for $geoNear query
解決方案
這是因?yàn)楫?dāng)前查詢(xún)的是MongoDB的GeoJSON 對(duì)象,查詢(xún)中使用了地理空間查詢(xún)運(yùn)算符:$nearSphere, 而使用它則需要地理空間索引,而定義為 GeoJSON 點(diǎn)的位置數(shù)據(jù)的索引為2dsphere索引。
故首先創(chuàng)建 2dsphere 類(lèi)型的索引,如下語(yǔ)句:
//執(zhí)行如下sql,給我user表的位置字段"location"創(chuàng)建 2dsphere 類(lèi)型的索引 db.user.createIndex({"location":"2dsphere"});
添加索引后即可通過(guò)上面的位置查詢(xún)sql成功查詢(xún)出結(jié)果集
mongodb 查詢(xún)地理位置報(bào)錯(cuò):planner returned error: unable to find index for $geoNear query‘ on server 1
1.問(wèn)題描述:mongodb存儲(chǔ)了地理位置
2.出現(xiàn)問(wèn)題:進(jìn)行地理位置查詢(xún)
{"point":? ? {"type": "Point",? ? ? ?"coordinates": [30.443902444762696, -84.27326978424058]},? ? ?"created_on": {"$date": 1398016710168},? ? ?"radius": 180,? ? ?"user": {"$oid": "53543188eebc5c0cc416b77c"},? ? ?"_id": {"$oid": "53544306eebc5c0ecac6cfba"},? ? ?"expires_on": {"$date": 1399831110168} }
3.解決問(wèn)題流程:
3.1:網(wǎng)上說(shuō)要建立索引
db.bar.createIndex({point:"2dsphere"});
3.2:建立索引提示了哪條數(shù)據(jù)報(bào)錯(cuò),然后將相關(guān)數(shù)據(jù)的儲(chǔ)存地理位置的字段 全部改為 {0,0}
3.3改完之后 ,建立了索引,依舊報(bào)錯(cuò)
3.4刪除之后重新創(chuàng)建索引
db.bar.createIndex({point:"2d"});
3.5最終查詢(xún)沒(méi)有報(bào)錯(cuò)了
創(chuàng)建索引參考:
http://chabaoo.cn/article/197576.htm
到此這篇關(guān)于MongoDB 位置查詢(xún)報(bào)錯(cuò) planner returned error: unable to find index for $geoNear query的文章就介紹到這了,更多相關(guān)MongoDB 位置查詢(xún)報(bào)錯(cuò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- go語(yǔ)言import報(bào)錯(cuò)處理圖文詳解
- Go語(yǔ)言將string解析為time.Time時(shí)兩種常見(jiàn)報(bào)錯(cuò)
- 解決MySQL報(bào)錯(cuò):The last packet sent successfully to the server was 0 milliseconds ago.
- go?mod?tidy報(bào)錯(cuò)解決方法詳解
- go引入自建包名報(bào)錯(cuò):package?XXX?is?not?in?std解決辦法
- goland安裝1.7版本報(bào)錯(cuò)Unpacked?SDK?is?corrupted解決
- Django-Xadmin后臺(tái)首頁(yè)添加小組件報(bào)錯(cuò)的解決方案
- Django報(bào)錯(cuò)TemplateDoesNotExist的問(wèn)題及解決
- 在 SHELL 腳本中調(diào)用另一個(gè) SHELL 腳本的方法(報(bào)錯(cuò): go:not found)
- django報(bào)錯(cuò)設(shè)置auth User的解決
- 解決Oracle?DISTINCT?報(bào)錯(cuò)?inconsistent?datatypes:?expected?-?got?CLOB(數(shù)據(jù)類(lèi)型不一致:?應(yīng)為?-,?但卻獲得?CLOB)的問(wèn)題
- Java中報(bào)錯(cuò)org.springframework.jdbc.UncategorizedSQLException的多種解決方法
- 執(zhí)行g(shù)o?build報(bào)錯(cuò)go:?go.mod?file?not?found?in?current?directory?or?any?parent?directory
- Go導(dǎo)入不同目錄下包報(bào)錯(cuò)的解決方法
- 解決MongoDB6.0報(bào)錯(cuò):"mongo"不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件
- maven報(bào)錯(cuò):Failed to execute goal on project問(wèn)題及解決
- Mongodb啟動(dòng)報(bào)錯(cuò)完美解決方案:about to fork child process,waiting until server is ready for connections.
- golang中package?is?not?in?GOROOT報(bào)錯(cuò)的真正解決辦法
- Go語(yǔ)言報(bào)錯(cuò):'godoc'?不是內(nèi)部或外部命令,也不是可運(yùn)行的程序(godoc無(wú)法使用處理)解決方法
相關(guān)文章
MongoDB在Windows平臺(tái)的安裝及配置方法
這篇文章主要介紹了MongoDB在Windows平臺(tái)的安裝及配置方法,簡(jiǎn)單分析了MongoDB的下載、設(shè)置方法、操作命令等具體步驟與相關(guān)注意事項(xiàng),需要的朋友可以參考下2017-04-04Mongodb 3.2.9開(kāi)啟用戶(hù)權(quán)限認(rèn)證問(wèn)題的步驟詳解
這篇文章主要給大家介紹了關(guān)于Mongodb 3.2.9開(kāi)啟用戶(hù)權(quán)限認(rèn)證問(wèn)題的詳細(xì)步驟,通過(guò)開(kāi)啟權(quán)限認(rèn)證,會(huì)對(duì)大家的Mongodb更加保護(hù)的安全些,文中將步驟介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-08-08MongoDB的備份(mongodump)與恢復(fù)(mongorestore)
在使用MongoDB時(shí),數(shù)據(jù)備份與恢復(fù)是非常重要的一環(huán),以防止數(shù)據(jù)丟失或意外刪除,本文就來(lái)介紹一下MongoDB的備份(mongodump)與恢復(fù)(mongorestore),感興趣的可以了解一下2023-12-12使用Locust對(duì)MongoDB進(jìn)行負(fù)載測(cè)試的操作步驟
Locust是一款使用Python開(kāi)發(fā)的開(kāi)源性能測(cè)試工具,支持分布式,可在多臺(tái)主機(jī)上對(duì)系統(tǒng)持續(xù)發(fā)送請(qǐng)求,本文給大家介紹了使用Locust對(duì)MongoDB進(jìn)行負(fù)載測(cè)試的操作步驟,文中通過(guò)圖文結(jié)合的方式介紹的非常詳細(xì),需要的朋友可以參考下2025-01-01MongoDB入門(mén)教程之常用的運(yùn)維技術(shù)介紹
這篇文章主要介紹了MongoDB入門(mén)教程之常用的運(yùn)維技術(shù)介紹,講解了安裝部署、狀態(tài)監(jiān)控、安全認(rèn)證、備份和恢復(fù)等內(nèi)容,需要的朋友可以參考下2014-08-08