【问题标题】:How to sort by two values in MongoDB-Ruby?如何在 MongoDB-Ruby 中按两个值排序?
【发布时间】:2012-10-24 05:22:30
【问题描述】:

所以我有一个 Ruby 脚本,我可以在其中找到“成绩”集合中所有类型为“家庭作业”的文档,一个“学生”数据库 (MongoDB) 事情是,按照以下说明进行操作:

http://api.mongodb.org/ruby/current/file.TUTORIAL.html

我尝试按分数排序,然后按学生 ID(反之亦然):

homeworks.sort(:score, 1).sort(:student_id, 1).to_a

并运行文件(“mongo.rb”),我得到按分数(升序)而不是按学生 ID 排序的作业输出...(它们被打乱了)如果我尝试切换值,我会得到按 student_id 排序的数组(升序)但不按分数排序...(在这种情况下,分数值被打乱)

如何使用 ruby​​ 在 mongo 中按两个参数升序排序?

【问题讨论】:

  • 仅供参考,看看this

标签: ruby mongodb sorting


【解决方案1】:

这个怎么样:

c = db['grades']
x = c.find({}, {:sort=>[[:student_id, 1], [:score, 1]]}).to_a

这在 irb 中对我有用。

【讨论】:

    【解决方案2】:

    根据文档,尝试

    homeworks.sort([[:score, 1], [:student_id, 1]]).to_a
    

    【讨论】:

    • 不!同样的结果... score 是有序的,student_id 是乱码的。
    • @Jmlevick:你确定吗?如果你这样做collection.find(...).sort(...),这应该可以工作。
    • collection.find({"type" => "homework"}) 这就是我正在做的......那是排除与家庭作业不同的其他文档类型......但即使使用所有收集文档,结果都是一样的,一份有序,一份打乱……
    猜你喜欢
    • 1970-01-01
    • 2019-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-20
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多