-1
我有一個對象數組,每當我需要它們時,我都希望它們被排序。所以,我有:是否在MongoDB中保存了插入順序?
things.sort!
things.each do |thing|
Thing.create!(property: some_property)
end
的things
陣列與來自a
到z
第一個字母串。但是,如果我運行上面的代碼,我的數據庫中的第一項開始m
,然後按字母順序去z
,然後返回到a
,並繼續。
那麼是說,插入順序不保證在MongoDB中保存?
當MongoDB保證保留插入順序時,我會感到驚訝。即使像PostgreSQL或MySQL這樣的數據庫也不這樣做。如果您依賴某個訂單,則需要告訴數據庫以特定順序返回結果。 – spickermann
@spickermann如果每次檢索結果時都需要對結果進行排序,與僅在插入時排序一次相比,效率不會有所降低?但我猜如果MongoDB不維護插入順序,那麼這可能是唯一的解決方案。 – 0472037
我認爲在大多數應用程序中,插入順序不是您想要用來讀取數據的順序。大多數情況下,您希望按日期,數字或名稱排序,但通常不是插入時間戳。使用索引來優化以應用程序所需的方式讀取數據。但每個應用程序需要不同的索引,它們是應用程序特定的,每個應用程序都有不同的要求,因此像「按插入順序」這樣的默認值在所有情況下都沒有意義。 – spickermann