【问题标题】:Sorting a collection in MongoDB with multiple keys使用多个键对 MongoDB 中的集合进行排序
【发布时间】:2016-07-25 11:46:43
【问题描述】:

我正在学习 MongoDB,我发现要对 MongoDB 集合进行排序,您必须执行以下操作:

db.people.find().sort({firstname: 1, lastname: 1})

这应该对应于 SQL 中的ORDER BY firstname, lastname。为了ORDER BY lastname, firstname,你必须使用:

db.people.find().sort({lastname: 1, firstname: 1})

请注意,{lastname: 1, firstname: 1} 是一个 JSON 对象。所以这里的关键顺序似乎很重要。但据我了解,JSON 对象的键不应该有任何意义。哪里错了?

【问题讨论】:

    标签: javascript json mongodb sorting sql-order-by


    【解决方案1】:

    使用它来按多个字段排序:

    db.people.find().sort([
      ["firstname": 1],
      ["lastname": 1]
    ]);
    

    在这里,我们也可以使用对象而不是数组。但是排序的顺序可能会也可能不会像指定的那样。但在数组的情况下,它会是。

    【讨论】:

    • 您的说法不正确。如 MongoDB 的文档中所述:应用程序可以发出查询返回的结果首先按用户名值升序排序,然后按降序(即最近到最后)日期值排序,例如:db.events.find().sort( { username: 1, date: -1 } )
    • 哈哈,谢谢!这个答案正是我想要的。
    • 这不适用于旧版本的 MongoDB。我在 MongoDB 2.6.4 上收到错误 "Can't canonicalize query: BadValue bad order array [2]"。但是当我在 MongoDB 3.2 上运行它时它起作用了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-26
    • 2010-09-26
    • 2023-04-09
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 2013-09-10
    相关资源
    最近更新 更多