2016-12-28 33 views
-1

我有一個對象數組,每當我需要它們時,我都希望它們被排序。所以,我有:是否在MongoDB中保存了插入順序?

things.sort! 

things.each do |thing| 
    Thing.create!(property: some_property) 
end 

things陣列與來自az第一個字母串。但是,如果我運行上面的代碼,我的數據庫中的第一項開始m,然後按字母順序去z,然後返回到a,並繼續。

那麼是說,插入順序不保證在MongoDB中保存?

+1

當MongoDB保證保留插入順序時,我會感到驚訝。即使像PostgreSQL或MySQL這樣的數據庫也不這樣做。如果您依賴某個訂單,則需要告訴數據庫以特定順序返回結果。 – spickermann

+0

@spickermann如果每次檢索結果時都需要對結果進行排序,與僅在插入時排序一次相比,效率不會有所降低?但我猜如果MongoDB不維護插入順序,那麼這可能是唯一的解決方案。 – 0472037

+1

我認爲在大多數應用程序中,插入順序不是您想要用來讀取數據的順序。大多數情況下,您希望按日期,數字或名稱排序,但通常不是插入時間戳。使用索引來優化以應用程序所需的方式讀取數據。但每個應用程序需要不同的索引,它們是應用程序特定的,每個應用程序都有不同的要求,因此像「按插入順序」這樣的默認值在所有情況下都沒有意義。 – spickermann

回答

相關問題