解決MongoDB?位置查詢報錯planner?returned?error:?unable?to?find?index?for?$geoNear?query的問題
MongoDB 位置查詢報錯planner returned error: unable to find index for $geoNear query
執(zhí)行查詢語句,使用 $nearSphere
/** * 1千米 = 0.6213712英里 15千米 = 9.3205679英里 查詢通過除以地球的大約赤道半徑(3963.2英里)將距離轉(zhuǎn)換為弧度。 * ①:如果是第一頁,查詢50公里內(nèi)的老朋友店鋪, * ②:查詢15公里內(nèi)所以的置頂服務商家,然后根據(jù)分頁參數(shù)來截取 * ③:0.00156785=0.6213712*10/3963.2(所以下列sql查詢的結(jié)果是以經(jīng)緯度[106.653412, 26.696467]為圓心半徑10公里以內(nèi)的所有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 點的位置數(shù)據(jù)的索引為2dsphere索引。
故首先創(chuàng)建 2dsphere 類型的索引,如下語句:
//執(zhí)行如下sql,給我user表的位置字段"location"創(chuàng)建 2dsphere 類型的索引 db.user.createIndex({"location":"2dsphere"});
添加索引后即可通過上面的位置查詢sql成功查詢出結(jié)果集
mongodb 查詢地理位置報錯:planner returned error: unable to find index for $geoNear query‘ on server 1
1.問題描述:mongodb存儲了地理位置
2.出現(xià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.解決問題流程:
3.1:網(wǎng)上說要建立索引
db.bar.createIndex({point:"2dsphere"});
3.2:建立索引提示了哪條數(shù)據(jù)報錯,然后將相關(guān)數(shù)據(jù)的儲存地理位置的字段 全部改為 {0,0}
3.3改完之后 ,建立了索引,依舊報錯
3.4刪除之后重新創(chuàng)建索引
db.bar.createIndex({point:"2d"});
3.5最終查詢沒有報錯了
創(chuàng)建索引參考:
http://www.dbjr.com.cn/article/197576.htm
到此這篇關(guān)于MongoDB 位置查詢報錯 planner returned error: unable to find index for $geoNear query的文章就介紹到這了,更多相關(guān)MongoDB 位置查詢報錯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- go語言import報錯處理圖文詳解
- Go語言將string解析為time.Time時兩種常見報錯
- 解決MySQL報錯:The last packet sent successfully to the server was 0 milliseconds ago.
- go?mod?tidy報錯解決方法詳解
- go引入自建包名報錯:package?XXX?is?not?in?std解決辦法
- goland安裝1.7版本報錯Unpacked?SDK?is?corrupted解決
- Django-Xadmin后臺首頁添加小組件報錯的解決方案
- Django報錯TemplateDoesNotExist的問題及解決
- 在 SHELL 腳本中調(diào)用另一個 SHELL 腳本的方法(報錯: go:not found)
- django報錯設置auth User的解決
- 解決Oracle?DISTINCT?報錯?inconsistent?datatypes:?expected?-?got?CLOB(數(shù)據(jù)類型不一致:?應為?-,?但卻獲得?CLOB)的問題
- Java中報錯org.springframework.jdbc.UncategorizedSQLException的多種解決方法
- 執(zhí)行g(shù)o?build報錯go:?go.mod?file?not?found?in?current?directory?or?any?parent?directory
- Go導入不同目錄下包報錯的解決方法
- 解決MongoDB6.0報錯:"mongo"不是內(nèi)部或外部命令,也不是可運行的程序或批處理文件
- maven報錯:Failed to execute goal on project問題及解決
- Mongodb啟動報錯完美解決方案:about to fork child process,waiting until server is ready for connections.
- golang中package?is?not?in?GOROOT報錯的真正解決辦法
- Go語言報錯:'godoc'?不是內(nèi)部或外部命令,也不是可運行的程序(godoc無法使用處理)解決方法
相關(guān)文章
Mongodb 3.2.9開啟用戶權(quán)限認證問題的步驟詳解
這篇文章主要給大家介紹了關(guān)于Mongodb 3.2.9開啟用戶權(quán)限認證問題的詳細步驟,通過開啟權(quán)限認證,會對大家的Mongodb更加保護的安全些,文中將步驟介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。2017-08-08MongoDB的備份(mongodump)與恢復(mongorestore)
在使用MongoDB時,數(shù)據(jù)備份與恢復是非常重要的一環(huán),以防止數(shù)據(jù)丟失或意外刪除,本文就來介紹一下MongoDB的備份(mongodump)與恢復(mongorestore),感興趣的可以了解一下2023-12-12