2012-11-02 18 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]]) 

与哈希第一种方式后,由于某些原因对我不起作用,但第二个完全没问题