次のような国のドキュメントがあります。
{
"_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 か国) が出力されるためではないかと考えましたが、それは私には意味がありません。国がインデックス内で利用可能な場合、インデックスを使用する必要がありますよね?
誰にもアイデアがありますか?
乾杯