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>.