2011-10-04 147 views
1

我相信這確實很簡單,但是如何在mongo w/PHP中按字母排序(最好是自然排序)?這是我現在所擁有的:PHP MongoDB按字母排序結果

$data->sort(array('title' => 1)); 

而且它不按字母順序返回數組。我錯過了什麼?

回答

0

我是mongodb的新手。但從我所瞭解的情況來看,應該在MongoDB中做更少的工作,並且在應用中應該做更多的工作。這就是爲什麼mongodb可以達到高速,僅僅是因爲它並不試圖成爲像RDMS一樣的應用程序。我認爲你需要將收藏索引。只需使用ensureIndex(array('title'=> 1));

+0

真棒 - 我m使用PHP來自然排序:) –

+0

很好聽。 mongodb很喜歡和你一起工作,直到你定義了大量的數據。 – WojonsTech

1

實際上這應該按A-Za-z順序排序,這與MongoDB如何與索引一起工作有關。 你可以看看票:https://jira.mongodb.org/browse/SERVER-90這是關於索引問題。 (請參閱:https://jira.mongodb.org/browse/SERVER-105關於特定票證,僅參考90)。

在代碼示例艾略特建議做這樣的事情: {名稱:{實:「艾略特」,排序:「艾略特」}} 這基本上意味着你有你只對排序使用第二場,包含要按全部小寫排序的字符串。

可悲的是,直到這票是固定的所有解決方案都只是workarrounds,但艾略特的解決方案可以讓你排序,只檢索集的一部分,而不是檢索整個集和PHP排序