首先,我已经阅读了很多与MongoDB查询性能相关的文章,但是我没有找到任何好的解决方案。
在集合内部,文档结构如下:
{
"_id" : ObjectId("535c4f1984af556ae798d629"),
"point" : [
-4.372925494081455,
41.367710205649544
],
"location" : [
{
"x" : -7.87297955453618,
"y" : 73.3680160842939
},
{
"x" : -5.87287143362673,
"y" : 73.3674043270052
}
],
"timestamp" : NumberLong("1781389600000")
}
我的收藏已经有了一个索引:
db.collection.ensureIndex({timestamp:-1})
查询看起来像这样:
db.collection.find({ "timestamp" : { "$gte" : 1380520800000 , "$lte" : 1380546000000}})
尽管如此,响应时间太长,大约需要20-30秒(这取决于指定的查询参数)。
任何帮助都是有用的!
提前致谢。
编辑:我更改了查找参数,用真实数据替换了它们。
上述查询需要46秒,并且这是explain()函数给出的信息:
{
"cursor" : "BtreeCursor timestamp_1",
"isMultiKey" : false,
"n" : 124494,
"nscannedObjects" : 124494,
"nscanned" : 124494,
"nscannedObjectsAllPlans" : 124494,
"nscannedAllPlans" : 124494,
"scanAndOrder" : false,
"indexOnly" : false,
"nYields" : 45,
"nChunkSkips" : 0,
"millis" : 46338,
"indexBounds" : {
"timestamp" : [
[
1380520800000,
1380558200000
]
]
},
"server" : "ip-XXXXXXXX:27017"
}