2011-10-17 3 views
1

mongoDB 데이터베이스를 사용하여 레일즈에서 루비 사이트를 개발 중입니다. 저는 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. " 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"), 
} 
을 기대하고

답변

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)