module BSON::Hash
Injects behaviour for encoding and decoding hashes to and from raw bytes as specified by the BSON
spec.
@see bsonspec.org/#/specification
@since 2.0.0
Constants
- BSON_TYPE
An hash (embedded document) is type 0x03 in the
BSON
spec.@since 2.0.0
Public Instance Methods
to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
click to toggle source
Get the hash as encoded BSON
.
@example Get the hash as encoded BSON
.
{ "field" => "value" }.to_bson
@return [ BSON::ByteBuffer
] The buffer with the encoded object.
@see bsonspec.org/#/specification
@since 2.0.0
# File lib/bson/hash.rb, line 40 def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?) if buffer.respond_to?(:put_hash) buffer.put_hash(self, validating_keys) else position = buffer.length buffer.put_int32(0) each do |field, value| buffer.put_byte(value.bson_type) buffer.put_cstring(field.to_bson_key(validating_keys)) value.to_bson(buffer, validating_keys) end buffer.put_byte(NULL_BYTE) buffer.replace_int32(position, buffer.length - position) end end
to_bson_normalized_value()
click to toggle source
Converts the hash to a normalized value in a BSON
document.
@example Convert the hash to a normalized value.
hash.to_bson_normalized_value
@return [ BSON::Document
] The normazlied hash.
@since 3.0.0
# File lib/bson/hash.rb, line 64 def to_bson_normalized_value Document.new(self) end