【发布时间】:2011-11-18 12:01:39
【问题描述】:
我在 Mongo 中有一个我认为非常简单、直接的查询,并创建了索引:
{ "Ended" : 1, "EndDate" -1 }
但是,当我对其运行一个简单的查询时,它似乎可以识别索引,但它仍在扫描大量对象以检索数据。这是我的查询和解释结果:
PRIMARY> db.listing.find({ "Ended" : { "$ne" : true }, "EndDate" : { "$lte" : ISODate("2011-11-18T00:47:40.638Z") } }).explain();
{
"cursor" : "BtreeCursor Ended_1_EndDate_-1 multi",
"nscanned" : 24508585,
"nscannedObjects" : 24508583,
"n" : 24508583,
"millis" : 108323,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"Ended" : [
[
{
"$minElement" : 1
},
true
],
[
true,
{
"$maxElement" : 1
}
]
],
"EndDate" : [
[
ISODate("2011-11-18T00:47:40.638Z"),
true
]
]
}
}
任何明显的想法我做错了什么?谢谢!
【问题讨论】:
-
如果将
"Ended" : { "$ne" : true }替换为"Ended" : false会发生什么? (或者这在您的架构中不起作用?)
标签: mongodb indexing mongodb-.net-driver