2013-04-08 3 views
0

나는 다음과 같은 쿼리가 :인덱스 몽고 쿼리없이 정렬 할 수 없습니다

{ "loc" : { "$near" : [ 32.08 , 34.779] , "$maxDistance" : 0.04499640028797696} , "isCreated" : true , "loc.venueName" : null} 

정렬 방식 : (100 개) 문서에

{"lastActiveTime":-1} 

제한합니다.

LOC - (위도, 경도, venueName가)

이 isCreated 키를 포함하는 임베디드 문서 - 부울

lastActiveTime - 날짜

I는 무엇입니까 예외 :

org.springframework.data.mongodb.UncategorizedMongoDbException : 인덱스가없는 sort()의 데이터가 너무 많습니다. 인덱스를 추가하거나보다 작은 제한을 지정하십시오.

나는 ... 시도,

{'loc':'2d', 'lastActiveTime':-1} 

과 인덱스, 화합물의 변화의 모든 종류를 시도하지 복잡하게하지만 난 여전히 위의 예외를 얻고있다 :

{'lastActiveTime':-1} 

어떤 쿼리를 성공시키기 위해 문서에서 생성해야하는 인덱스? 인덱스가 만들어지지 않은 것처럼

{ 
    "_id" : "5d5085601208aa918bea3c1ede31374d", 
    "gender" : "female", 
    "isCreated" : true, 
    "lastActiveTime" : ISODate("2013-04-08T11:30:56.615Z"), 
    "loc" : { 
    "lat" : 32.082230499955806, 
    "lon" : 34.813542940344945, 
    "locTime" : NumberLong(0) 
    } 
} 
+0

당신이 {', 해봤를 LOC : '2D', isCreated : 1, loc.venueName : 1, lastActiveTime : -1}'? – Sammaye

+0

질문에 예제 문서를 추가 할 수 있습니까? 쿼리가 처음부터 적절한 지 확인하십시오. –

+0

예제 문서가 추가되었습니다. loc.venueName이 null이거나 존재하지 않습니다. mongoVUE 클라이언트에 따라 –

답변

0

나에게 소리 :

MongoDB의 버전이 (관련 키) 예를 들어 문서입니다 2.0.6

입니다. 너가 lastActiveTime에 그 때 분류하는 경우에 색인을 붙이는 것이다.

당신은 몽고 쉘이 입력하여 제대로 설정 인덱스가 있는지 veryfing보십시오 :

use yourdbname 
db.yourcollectionname.getIndexes() 
+0

이 생성되었습니다. 또한 값이 있음을 볼 수 있습니다 ... –

+0

2d 색인 외에도 색인 할 수 있습니까? loc 속성에, 맞지? 화합물이 아닙니다 .. –

+0

예, lastActiveTime은 복합 색인이 아닌 자체 색인이 필요합니다. – UpTheCreek

관련 문제