【问题标题】:Mongodb - ROR sorting with multiple fieldsMongodb - 具有多个字段的 ROR 排序
【发布时间】:2012-08-08 19:00:21
【问题描述】:

我正在使用 mongoDB 数据库在 ruby​​ on rails 中开发一个站点。我是 mongoDB 的初学者,我想使用多个键对数据进行排序。我的收藏之一如下所示。

dd_users
{
   "_id": ObjectId("4e9bcbdb1d41c866c600004e"),   
   "name": "Ram",
   "score":5
    "created_at": ISODate("2011-10-17T06: 31: 55.0Z"),
}
{
   "_id": ObjectId("4e9bcbdb1d41c866c600004f"),   
   "name": "Robert",
   "score":1
   "created_at": ISODate("2011-10-12T06: 31: 55.0Z"),
}
{
   "_id": ObjectId("4e9bcbdb1d41c866c600004g"),   
   "name": "Molly Bracken",
   "score":3
   "created_at": ISODate("2011-10-15T06: 31: 55.0Z"),
}
{
   "_id": ObjectId("4e9bcbdb1d41c866c600005k"),   
   "name": "Ninou-Co France",
   "score":5
   "created_at": ISODate("2011-10-16T06: 31: 55.0Z"),
}

我想按“score”和“created_at”的降序对记录进行排序。 我使用 mongomapper 查询作为 1.DdUser.where({"name" => { "$ne" => nil}).sort([["score","desc"],["created_at","desc"]])。但是我只按照分数的顺序得到结果。

我期待结果

{
   "_id": ObjectId("4e9bcbdb1d41c866c600004e"),   
   "name": "Ram",
   "score":5
    "created_at": ISODate("2011-10-17T06: 31: 55.0Z"),
}
{
   "_id": ObjectId("4e9bcbdb1d41c866c600005k"),   
   "name": "Ninou-Co France",
   "score":5
   "created_at": ISODate("2011-10-16T06: 31: 55.0Z"),
}
{
   "_id": ObjectId("4e9bcbdb1d41c866c600004g"),   
   "name": "Molly Bracken",
   "score":3
   "created_at": ISODate("2011-10-15T06: 31: 55.0Z"),
}
{
   "_id": ObjectId("4e9bcbdb1d41c866c600004f"),   
   "name": "Robert",
   "score":1
   "created_at": ISODate("2011-10-12T06: 31: 55.0Z"),
}

【问题讨论】:

    标签: ruby-on-rails sorting mongodb mongoid


    【解决方案1】:
    DdUser.where("name" => { "$ne" => nil } ).sort(["score","desc"], ["created_at","desc"])
    

    【讨论】:

      【解决方案2】:

      我个人没用过Mongomapper,所以下面的代码未经测试:

      DdUser.where("name" => { "$ne" => nil } ).sort([:score.desc, :created_at.desc])
      

      【讨论】:

        【解决方案3】:

        有点死灵,对我有用的是

        DdUser.where("name" => { "$ne" => nil } ).sort(:score.desc, :created_at.desc)
        

        【讨论】:

          猜你喜欢
          • 2016-12-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-25
          • 1970-01-01
          • 2022-11-29
          • 2014-03-17
          • 2019-03-30
          相关资源
          最近更新 更多