0

我有以下查询:

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

排序 :

{"lastActiveTime":-1}

限于 100 个文档。

loc - 包含键的嵌入文档( lat,lon,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)
  }
}
4

1 回答 1

0

在我看来,索引尚未创建。如果您正在排序,lastActiveTime那么这就是要索引的那个。

尝试通过在 mongo shell 中键入以下内容来确保您已正确设置索引:

use yourdbname
db.yourcollectionname.getIndexes()
于 2013-04-08T10:09:17.417 回答