我有幾個對象需要執行不區分大小寫的排序。我被告知我不能將陰影列添加到數據庫以正常化值。由於這個,我正在使用聚合來排序我的輸出。是否有更好的方式在MongoDB中進行不區分大小寫排序而不使用陰影列?
我也表示爲這樣一個簡單的對象:
_id:該對象ID
createdOn:時間創建對象
lastUpdatedOn:Time對象最後更新
名稱:名稱的對象
isActive:表示對象當前是否處於活動狀態的布爾值
這是我的聚集函數:
db.organization.aggregate(
[
{
$match: { isActive: true }
},
{
$project: {
lastUpdatedOn: 1,
createdOn: 1,
name: 1,
normalizedName: {$toLower: "$name"}
}
},
{
$sort: { normalizedName: 1 }
},
{
$project: {
lastUpdatedOn: 1,
createdOn: 1,
name: 1
}
}
]
)
它首先可以確保我們只處理活動對象,我們的排序創建標準化領域,進行排序,然後刪除標準化字段,以便它不是」暴露給用戶。它的工作原理是根據名稱字段按字母順序排列所有對象,但我不知道是否有更好的方法。
不要做這種方式。您正在將整個集合加載到內存中。如果你的集合大於你的php內存限制,你會得到一個內存不足的錯誤。順便說一句:無論如何你要循環使用iterator_to_array會浪費它。 – 2016-04-19 16:13:59
同意,這不是方式,但只是一個出路。 – phpMax 2016-04-21 03:31:15