【问题标题】:Mongo compound indexes and sort directionMongo 复合索引和排序方向
【发布时间】:2011-10-20 17:30:52
【问题描述】:

如果我有一个大集合(40m+ 个对象)并且我正在寻找:

(a : 1 OR b : 2) && c : 3
sorted by d : 1

我知道我会创建一个索引:

{ "a":1, "b":1, "c":1, "d":1 }

但是如果我想让排序顺序颠倒,我是否需要一个额外的索引:

 { "a":1, "b":1, "c":1, "d":-1 }

非常感谢。

【问题讨论】:

    标签: sorting mongodb sortdirection


    【解决方案1】:

    如果您希望结果按升序或降序排序,复合索引可能会让您失望。请记住,复合索引按字典顺序对元组进行排序。没有理由相信元组在最后一个键 (d) 上总是按升序排列。

    您可以简单地执行以下操作:

    db.foo.find(...).sort({d:1});
    
    db.foo.find(...).sort({d:-1});
    

    排序,即使在大型元组上也是相当快的。

    【讨论】:

    • Mongo 每次查询只能使用一个索引。我可能误读了这个问题,但我不确定创建多个索引来覆盖该查询是否是正确的选择。
    • 是的,MongoDB 在索引方面非常有限。
    猜你喜欢
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-02
    相关资源
    最近更新 更多