標題主要描述了這個問題。我假設它是作爲一個數組來維護的,但如果哈希它不會。我只是不確定它使用了哪個。是否在MongoDB中維護嵌入對象的順序?
另外,我應該提到我使用mongoid(Ruby的ORM包裝),以防萬一這會改變事情。
標題主要描述了這個問題。我假設它是作爲一個數組來維護的,但如果哈希它不會。我只是不確定它使用了哪個。是否在MongoDB中維護嵌入對象的順序?
另外,我應該提到我使用mongoid(Ruby的ORM包裝),以防萬一這會改變事情。
要回答你的基本問題是沒有。
實際上,有一個關於keys in JIRA重新排序的錯誤。嵌入對象只是存儲在另一個值中的鍵/值的對象。所以在數據庫中的排序絕對不能保證。
從BSON的角度來看,訂購應該沒有關係。 {x:1,y:2}
與{y:2,x:1}
相同。
從驅動程序的角度來看,這兩個符號應該返回相同的對象。
但是,如果您使用嵌入文檔的數組,則數組應該保持其順序。
因此,你不能依賴任何對象的鍵排序(嵌入或不),但數組對象的排序應該工作。
我已確認這是正確的。有趣的一點是,儘管嵌入式文檔從Mongoid的數組中出來,順序並沒有被保存。所以它可能在內部存儲爲散列,並且僅在ruby中以數組的形式出現。 –
從Mongoid Docs:1到許多嵌入式關係存儲爲散列數組。
http://mongoid.org/docs/relations/embedded/1-n.html
因此,這意味着你可以使用像parent.embeddedobject.first一個調用來獲取數組中第一個嵌入的對象。您還可以使用數組附加符號(person.addresses < < Address.new)添加新的嵌入對象。
我也使用mongoid,我發現這個railscast是非常有用的。如果你還沒有,請檢查一下。
http://railscasts.com/episodes/238-mongoid
TL:DR;我是一個noob,但我認爲命令被保留。
你能告訴我們它是如何存儲在mongo中嗎? –