0
如果我有這樣的複合索引:{ a: -1, b: -1, c: -1 }
我可以按{ a: 1, b: 1, c: 1 }
排序,仍然使用複合索引?基本上,保持順序和相對排序相同,只是按相反的順序。按照複合索引的相反順序排序仍然有效?
如果我有這樣的複合索引:{ a: -1, b: -1, c: -1 }
我可以按{ a: 1, b: 1, c: 1 }
排序,仍然使用複合索引?基本上,保持順序和相對排序相同,只是按相反的順序。按照複合索引的相反順序排序仍然有效?
是的,MongoDB可以使用複合索引對索引鍵進行反向排序。
如果你有一個複合索引:
db.test.ensureIndex({a: -1, b: -1, c: -1})
的explain
結果表明,BTreeCursor
使用
db.test.find().sort({a: 1, b:1, c:1}).explain()
"cursor" : "BtreeCursor a_-1_b_-1_c_-1 reverse",
"isMultiKey" : false,
"n" : 11,
"nscannedObjects" : 11,
"nscanned" : 11,
"nscannedObjectsAllPlans" : 11,
...
複合索引將被使用,如果你顛倒所有的排序順序的索引前綴。
但是,db.test.find().sort({a:1, b: 1, c: -1})
將不能使用索引,因此將使用BasicCursor
。