我有一个国家文件,看起来像这样:
{
"_id" : ObjectId("4e493af4140700590800154f"),
"geoname_id" : "49518",
"code" : "rw",
"names" : {
"en" : "Rwanda",
"nl" : "Rwanda",
"de" : "Ruanda"
}
}
为了仅在查询时触摸索引:
db.countries.find({}, {"names.en":1, _id:0})
我添加了以下索引:
db.countries.ensureIndex({"names.en":1})
据我了解,查询现在应该只触及索引。但是, .explain() 告诉我查询根本没有使用任何索引:
{
"cursor" : "BasicCursor",
"nscanned" : 247,
"nscannedObjects" : 247,
"n" : 247,
"millis" : 0,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
}
}
我认为原因可能是完整的数据库将被输出(247 个国家),但这对我来说没有任何意义。当国家/地区在索引中可用时,应该使用索引,对吗?
有人有想法吗?
干杯