2012-11-02 19 views
0

我不知道該怎麼辦萬事紅寶石MongoDB的那種萬事

Example of sorting from official site在這裏我們可以找到下面的例子中的MongoDB的驅動程序排序:

# Sort in ascending order by :i 
coll.find.sort(:i) 

# Sort in descending order by :i 
coll.find.sort(:i => :desc) 

根據這些例子我累到做這樣的事情

coll.find.sort(:i,:j) 

,這是沒有工作

你知道在ruby driver中做多字段排序的正確方法嗎?

回答

1

排序方法可以採用單字段排序的關鍵字,也可以採用[關鍵字,方向]對的數組進行多字段排序。這裏是你會是什麼樣子:

coll.find.sort(["score", 1], ["created_at", 1]) 
+0

你也可以使用:升序和降序,不知道整數,但自從你寫了它,我想這也可以。這個文檔實際上有點令人困惑,我試過sort(:i =>:desc),但是我得到一個錯誤,說我需要使用數組語法。 – mrbrdo

+0

截至紅寶石1.9.3p194和mongo 1.9.0,這失敗了一個奇怪的錯誤。我需要將sort數組傳遞給sort方法,即:coll.find.sort([[「score」,1],[「created_at」],1]])。 – Fryie

0

很短的調查回答結果發現

我們可以使用

hash_as_sort_parameters({:field1 => :asc, "field2" => :desc}) 

array_as_sort_parameters([["field1", :asc], ["field2", :desc]]) 

與哈希第一種方式後,由於某些原因對我不起作用,但第二個完全沒問題