名前、アクティブ、重量の3つのフィールドを持つmongodbコレクション「機能」があります。機能を重みの降順で並べ替えます。
db.features.find({active:true},{name:1, weight:1}).sort({weight:-1})
最適化のために、私はそれのためのインデックスを作成します:
db.features.ensureIndex({'active': 1, 'weight': -1})
explain()
クエリで使用するとうまく機能することがわかります。
ただし、重みの昇順でクエリを実行すると、作成したばかりのインデックスが機能せず、重みの昇順で別のインデックスを作成する必要があると思います。クエリ:
db.features.find({active:true},{name:1, weight:1}).sort({weight:1}).explain()
Explain() を使用してインデックスがどのように機能するかを示すと、次のように出力されます。
"cursor" : "BtreeCursor active_1_weight_-1 reverse",
インデックスの逆は、クエリがインデックスによって最適化されていることを意味しますか?
一般に、場合によっては昇順で並べ替え、場合によっては降順で並べ替える場合、重量の昇順と降順のような2つのインデックスを作成する必要がありますか?