2017-02-19 25 views
0

Я использую Mongoid 6.0.3типа Mongoid Hash стал BSON :: Документ после поиска

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 после простой находки?

ответ

0

BSON использует упорядоченные ключи в BSON :: Документы и в базе данных монго.

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

и

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

является "же" хэш-рубиновый.

Спецификация Mongo/BSON говорит, что эти два документа не являются одинаковыми, потому что ключи упорядочены по-разному.

К вам (пользователю) может не иметь значения, какой именно порядок ключей. Но если вы позаботились, BSON и MongoDB будут уважать это для вас.

Does Key order matter in a MongoDB BSON doc?