[MONGODB] MongoDB를 '$ geoNear 쿼리에 대한 인덱스를 찾을 수 없습니다'
MONGODBMongoDB를 '$ geoNear 쿼리에 대한 인덱스를 찾을 수 없습니다'
난 그냥 간단한 근처 쿼리 작업을 얻기 위해 노력하고있어. 여기 내 문서의 샘플입니다.
{"point":
{"type": "Point",
"coordinates": [30.443902444762696, -84.27326978424058]},
"created_on": {"$date": 1398016710168},
"radius": 180,
"user": {"$oid": "53543188eebc5c0cc416b77c"},
"_id": {"$oid": "53544306eebc5c0ecac6cfba"},
"expires_on": {"$date": 1399831110168}
}
및 mongod와 나는 명령을 시도 :
db.bar.find({point: {$near: [-84.26060492426588, 30.45023887165371]}});
하지만 난이 오류가 발생합니다 :
아마 내 Google 쿵푸 오늘 너무 선명하지 않습니다하지만 난 아무것도 찾을 수 없습니다. 또한, 나는 인덱스 명령을 확인 달렸다. 내 의도는 이러한지도 위치 점이다.
db.bar.ensureIndex({a:1});
db.bar.ensureIndex({geo:"2d"});
해결법
-
==============================
1.몇 가지 문제는, 당신은 foo는 데이터베이스의 foo는 모음에 인덱스를 생성하지만, 바 수집을 조회한다. 올바른 컬렉션해야합니다.
몇 가지 문제는, 당신은 foo는 데이터베이스의 foo는 모음에 인덱스를 생성하지만, 바 수집을 조회한다. 올바른 컬렉션해야합니다.
당신이 geoJson 객체를 지원하는 "2dsphere"인덱스를 추가 할 필요가 삽입 한 문서를 읽기. 이 지수는 시도하므로, 문서의 "포인트"요소에 있어야합니다
db.bar.createIndex({point:"2dsphere"});
그런 다음 쿼리와 쿼리에 대한 geoJson의 OBJ를 제공하여 다음 수 있습니다 :
db.bar.find( { point : { $near : { $geometry : { type : "Point" , coordinates : [-84.27326978424058, 30.443902444762696] }, $maxDistance : 1 } } } )
-
==============================
2.
db.prod.createIndex({ "location": "2d" })
이것은 나를 위해 같은 문제에 대한 해결했다.
자극이 내 컬렉션의 이름과 위치는 어디 컬럼의 이름 인 저장 지리 위치 (GeoPoint의)
동일한에 대한 몇 가지 논의는 여기에서 찾을 수 있습니다
-
==============================
3.그래서 잘못 여기에 몇 가지있을 것 같습니다 :
그래서 잘못 여기에 몇 가지있을 것 같습니다 :
db.foo.createIndex({geo: "2d"})
현재이 "지오"라는 필드가 아닌 데이터와 필드가 그 자리에 있었어야 때문에 "실패"하지 않습니다. 올바른 필드입니다 대신 "포인트"를 사용했다면, 당신은 인덱스의이 유형은 GeoJSON 데이터에 대한 잘못된 있음을 알리는 오류가 발생했을 것입니다. 당신은 "2dsphere"인덱스가 필요합니다 :
db.points.createIndex({ "point": "2dsphere" })
db.points.find({point: { $near: { $geometry:{ type: "Point", coordinates: [-84.26060492426588, 30.45023887165371] } } }})
$ 근처의 설명서를 참조하십시오
-
==============================
4.이미 색인을 만들려고 몇 가지 구문 또는 필드 잘못을 가지고있는 경우에 위의 답변뿐만 아니라, 당신은 실행할 수 있습니다
이미 색인을 만들려고 몇 가지 구문 또는 필드 잘못을 가지고있는 경우에 위의 답변뿐만 아니라, 당신은 실행할 수 있습니다
dB
.dropIndexes ().; 모든 인덱스를 정리하고 제대로 다시 만들려면. 또한, 인덱스가없는 좌표 자체에 "좌표"의 부모에 작성해야합니다 :
{ "_id": 59ac03d168eaaa14c2a57a00", "location":{ "type":"Point", "coordinates":[ 131.6667, 57.8368 ] }, "age":53, "username":"Brandi_Greenfelder" }
dB
.createIndex ({위치 '2dsphere'}).; 이 새로운 일이 같은 관심이있다 "2D"와 "2dsphere", 두 번째를 사용합니다.
from https://stackoverflow.com/questions/23188875/mongodb-unable-to-find-index-for-geonear-query by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 유성 - collection.find ()는 항상 모든 필드를 반환 (0) | 2019.12.11 |
---|---|
[MONGODB] 단일 쿼리에 몽고에서 여러 문서를 제거 (0) | 2019.12.11 |
[MONGODB] JSON 문자열에서 생성 BSON 객체 (0) | 2019.12.11 |
[MONGODB] 유성 : 예기치 않은 몽고 종료 코드 (100) (0) | 2019.12.11 |
[MONGODB] 몽구스 스키마 모델에 등록되지 않은 (0) | 2019.12.11 |