标题基本上描述了这个问题。我假设如果它作为一个数组出来,它将被维护,但如果一个哈希它不会。我只是不确定它在使用它。
另外,我应该提一下我正在使用mongoid(Ruby的ORM包装器),以防万一这会改变。
答案 0 :(得分:2)
回答您的基本问题是否。
事实上,有一个关于重新排序keys in JIRA的错误。嵌入对象只是存储在另一个值中的键/值的对象。因此,DB中无法保证顺序。
从BSON的角度来看,订购无关紧要。 {x:1,y:2}
与{y:2,x:1}
相同。
从驱动程序的角度来看,这两种符号都应该返回相同的对象。
但是,如果您使用的是 嵌入式文档数组,那么该数组应该保持其顺序。
所以你不能依赖任何对象(嵌入或不嵌入)的键排序,但是数组对象的排序应该工作。
答案 1 :(得分:0)
从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;我是一个菜鸟,但我认为订单是保留的。