2017-02-19 4 views
0

後、私はmongoid 6.0.3Mongoidハッシュタイプが見つけ

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 ::ドキュメントになった私は何かを逃しましたか?シンプルな検索の後にハッシュがBSON :: Documentになる理由を理解できませんか?

答えて

0

BSONはBSON :: Documentsとmongoデータベース内で順序付けされたキーを使用します。

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

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

ルビーに "同じ" のハッシュです。

Mongo/BSON仕様では、キーの順序が異なるため、2つのドキュメントが同じではないと言われています。

あなた(ユーザー)には、キーの順序は関係ありません。しかし、気にしていれば、BSONとMongoDBはそれを尊重します。

Does Key order matter in a MongoDB BSON doc?