Node.js 按复合索引的相反顺序排序仍然有效吗?

Node.js 按复合索引的相反顺序排序仍然有效吗?,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,如果我有这样一个复合索引:{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() "

如果我有这样一个复合索引:
{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})
将无法使用索引,因此将使用
基本计数器