Module: BSON::Array

Defined in:
lib/bson/array.rb

Overview

Injects behaviour for encoding and decoding arrays to and from raw bytes as specified by the BSON spec.

See Also:

Since:

  • 2.0.0

Defined Under Namespace

Modules: ClassMethods

Constant Summary collapse

BSON_TYPE =

An array is type 0x04 in the BSON spec.

Since:

  • 2.0.0

4.chr.force_encoding(BINARY).freeze

Instance Method Summary collapse

Instance Method Details

#to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?) ⇒ String

Note:

Arrays are encoded as documents, where the index of the value in the array is the actual key.

Get the array as encoded BSON.

Examples:

Get the array as encoded BSON.

[ 1, 2, 3 ].to_bson

Returns:

  • (String)

    The encoded string.

See Also:

Since:

  • 2.0.0



43
44
45
46
47
48
49
50
51
52
53
# File 'lib/bson/array.rb', line 43

def to_bson(buffer = ByteBuffer.new, validating_keys = Config.validating_keys?)
  position = buffer.length
  buffer.put_int32(0)
  each_with_index do |value, index|
    buffer.put_byte(value.bson_type)
    buffer.put_cstring(index.to_s)
    value.to_bson(buffer, validating_keys)
  end
  buffer.put_byte(NULL_BYTE)
  buffer.replace_int32(position, buffer.length - position)
end

#to_bson_normalized_valueArray

Converts the array to a normalized value in a BSON document.

Examples:

Convert the array to a normalized value.

array.to_bson_normalized_value

Returns:

  • (Array)

    The normalized array.

Since:

  • 3.0.0



80
81
82
# File 'lib/bson/array.rb', line 80

def to_bson_normalized_value
  map { |value| value.to_bson_normalized_value }
end

#to_bson_object_idString

Note:

This is used for repairing legacy bson data.

Convert the array to an object id. This will only work for arrays of size 12 where the elements are all strings.

Examples:

Convert the array to an object id.

array.to_bson_object_id

Returns:

  • (String)

    The raw object id bytes.

Raises:

  • (InvalidObjectId)

    If the array is not 12 elements.

Since:

  • 2.0.0



68
69
70
# File 'lib/bson/array.rb', line 68

def to_bson_object_id
  ObjectId.repair(self) { pack("C*") }
end