Hash Mongoid哈希类型在查找后变为BSON::Document

Hash Mongoid哈希类型在查找后变为BSON::Document,hash,mongoid,document,bson,Hash,Mongoid,Document,Bson,我正在使用mongoid 6.0.3 class C include Mongoid::Document field :h, type: Hash, default: {} end c = C.new c.h = {"a" => "b"} c.save! puts c.h.class # gives Hash saved_c = C.find(c.id) puts saved_c.h.class # gives BSON::Document 我错过什么了吗?我不明

我正在使用mongoid 6.0.3

class C
  include Mongoid::Document

  field :h, type: Hash, default: {}
end

c = C.new
c.h = {"a" => "b"}
c.save!
puts c.h.class       # gives Hash
saved_c = C.find(c.id)
puts saved_c.h.class # gives BSON::Document

我错过什么了吗?我不明白为什么经过简单的查找后,哈希会变成BSON::Document?

BSON在BSON::Documents和mongo数据库中使用有序键

 {"a" => "b", "c" => "d"} 

是ruby的“相同”哈希

Mongo/BSON规范说这两个文档不一样,因为密钥的顺序不同

对于您(用户)来说,密钥顺序可能并不重要。但如果你真的在乎,BSON和MongoDB会尊重你的

 {"c" => "d", "a" => "b"}