2013-04-08 79 views
0

我有以下查詢:無法排序沒有索引蒙戈查詢

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

排序方式:

{"lastActiveTime":-1} 

限量100個文檔。

祿 - 包含密鑰(緯度,經度,venueName)

isCreated嵌入文檔 - 布爾

lastActiveTime - 最新

我收到例外:

org.springframework.data.mongodb.UncategorizedMongoDbException:sort()沒有索引的數據太多。添加索引或指定較小的限制;

我已經嘗試了所有類型的索引,化合物的變化,而不是化合物,但我仍然得到了上面的異常,試圖...

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

和:

{'lastActiveTime':-1} 

哪我需要在文檔中創建索引才能使查詢成功?

MongoDB的版本是2.0.6

這是例如文件(連同有關鍵):

{ 
    "_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 2013-04-08 10:33:57

+0

你可以向你的問題添加一個示例文檔嗎?只是爲了確保查詢適合於開始。 – 2013-04-08 11:32:41

+0

添加示例文件..in文件loc.venueName爲空/不存在 – 2013-04-08 11:44:53

回答

0

像指數尚未創建的聲音給我。如果你正在排序lastActiveTime那麼這是一個索引。

嘗試veryfing,你必須通過在蒙戈shell中鍵入該設置不當指標:

use yourdbname 
db.yourcollectionname.getIndexes() 
+0

根據mongoVUE客戶端創建我也可以看到它具有值... – 2013-04-08 10:29:55

+0

您的意思是指除了2d索引之外的索引在loc屬性上,對嗎?不是化合物。 – 2013-04-08 10:32:02

+0

是的,lastActiveTime需要它自己的索引,而不是複合索引。 – UpTheCreek 2013-04-08 10:32:36