Provided by: libmango-perl_0.22-1_all
NAME
Mango::BSON - BSON
SYNOPSIS
use Mango::BSON ':bson'; my $bson = bson_encode { foo => 'bar', baz => 0.42, unordered => {one => [1, 2, 3], two => bson_time}, ordered => bson_doc(one => qr/test/i, two => bson_true) }; my $doc = bson_decode $bson;
DESCRIPTION
Mango::BSON is a minimalistic implementation of <http://bsonspec.org>. In addition to a bunch of custom BSON data types it supports normal Perl data types like "Scalar", "Regexp", "undef", "Array" reference, "Hash" reference and will try to call the "TO_JSON" method on blessed references, or stringify them if it doesn't exist. "Scalar" references will be used to generate booleans, based on if their values are true or false.
FUNCTIONS
Mango::BSON implements the following functions. bson_bin my $bin = bson_bin $bytes; Create new BSON element of the binary type with Mango::BSON::Binary, defaults to the "generic" binary subtype. # Function bson_bin($bytes)->type('function'); # MD5 bson_bin($bytes)->type('md5'); # UUID bson_bin($bytes)->type('uuid'); # User defined bson_bin($bytes)->type('user_defined'); bson_code my $code = bson_code 'function () {}'; Create new BSON element of the code type with Mango::BSON::Code. # With scope bson_code('function () {}')->scope({foo => 'bar'}); bson_dbref my $dbref = bson_dbref('test', $oid); Create a new database reference. bson_decode my $doc = bson_decode $bson; Decode BSON into Perl data structures. bson_doc my $doc = bson_doc; my $doc = bson_doc foo => 'bar', baz => 0.42, yada => {yada => [1, 2, 3]}; Create new BSON document with Mango::BSON::Document, which can also be used as a generic ordered hash. # Order is preserved my $hash = bson_doc one => 1, two => 2, three => 3; $hash->{four} = 4; delete $hash->{two}; say for keys %$hash; bson_encode my $bson = bson_encode $doc; my $bson = bson_encode {}; Encode Perl data structures into BSON. bson_false my $false = bson_false; Create new BSON element of the boolean type false. bson_length my $len = bson_length $bson; Check BSON length prefix. bson_max my $max_key = bson_max; Create new BSON element of the max key type. bson_min my $min_key = bson_min; Create new BSON element of the min key type. bson_oid my $oid = bson_oid; my $oid = bson_oid '1a2b3c4e5f60718293a4b5c6'; Create new BSON element of the object id type with Mango::BSON::ObjectID, defaults to generating a new unique object id. # Generate object id with specific epoch time my $oid = bson_oid->from_epoch(1359840145); bson_time my $now = bson_time; my $time = bson_time time * 1000; Create new BSON element of the UTC datetime type with Mango::BSON::Time, defaults to milliseconds since the UNIX epoch. bson_true my $true = bson_true; Create new BSON element of the boolean type true. bson_ts my $timestamp = bson_ts 23, 24; Create new BSON element of the timestamp type with Mango::BSON::Timestamp. decode_int32 my $int32 = decode_int32 $bytes; Decode 32bit integer. decode_int64 my $int64 = decode_int64 $bytes; Decode 64bit integer. encode_cstring my $bytes = encode_cstring $cstring; Encode cstring. encode_int32 my $bytes = encode_int32 $int32; Encode 32bit integer. encode_int64 my $bytes = encode_int64 $int64; Encode 64bit integer.
SEE ALSO
Mango, Mojolicious::Guides, <http://mojolicio.us>.