私はサイト使用イベントを(訪問者)のサブオブジェクトに記録しています。MongoDBのサブオブジェクトを照会してもインデックスが使用されていません
{ "_id" : ObjectId("4d4c695794b332a0740009bd"), "evs" : [
{
"ev" : "Visit Home Page",
"d" : 1,
"s" : 1
},
{
"ev" : "Buy Product",
"d" : "110.10",
"upc" : 1234,
"s" : 1
},
{
"ev" : "Sign up to newsletter",
"d" : "1",
"s" : 1
}
]}
私は「evs.s」に関する指標がありますが、私はevs.s上で検索した場合、インデックスが使用されていない:ここでのデータ構造の基本的な例がある
db.visitors.find({'evs.s':0}).explain()
{
"cursor" : "BtreeCursor evs.s_1",
"nscanned" : 33361,
"nscannedObjects" : 33361,
"n" : 33361,
"millis" : 311,
"nYields" : 105,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"evs.s" : [
[
0,
0
]
]
}
}
そのクエリは311ミリ秒かかり、すべてのオブジェクトをスキャンします。ここ
インデックスである:db.visitors.getIndexes()
{
"ns" : "tracking.visitors",
"unique" : false,
"key" : {
"evs.s" : 1
},
"name" : "evs.s_1",
"v" : 0
}
はい、あなたの権利は、効率的に10,000のインデックスを作成する実際の方法ではありません。 Limitはクエリを大量に高速化します。ありがとう! – Lerchmo