2011-10-17 72 views
1

我正在使用mongoDB数据库在rails上开发ruby站点。我是mongoDB的初学者,我想用多个键对数据进行排序。我的一个收藏如下所示。Mongodb - 与多个字段的ROR排序

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”,“降序“]])。但是我只按照得分的顺序得到结果。

我期待的结果

{ 
    "_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"), 
} 

回答

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

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

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

不工作:(。 – Sreeraj

0

一个死灵的一点,什么对我的作品是

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