Mango::BSON - BSON
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;
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, regular expression, undef, array reference, hash reference and will try to call the TO_BSON and TO_JSON methods 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.
undef
TO_BSON
TO_JSON
Mango::BSON implements the following functions, which can be imported individually or at once with the :bson flag.
:bson
my $bin = bson_bin $bytes;
Create new BSON element of the binary type with Mango::BSON::Binary, defaults to the generic binary subtype.
generic
# 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');
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'});
my $dbref = bson_dbref 'test', $oid;
Create a new database reference.
# Longer version my $dbref = {'$ref' => 'test', '$id' => $oid};
my $doc = bson_decode $bson;
Decode BSON into Perl data structures.
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;
my $bson = bson_encode $doc; my $bson = bson_encode {};
Encode Perl data structures into BSON.
my $false = bson_false;
Create new BSON element of the boolean type false.
my $len = bson_length $bson;
Check BSON length prefix.
my $max_key = bson_max;
Create new BSON element of the max key type.
my $min_key = bson_min;
Create new BSON element of the min key type.
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);
my $raw = bson_raw $bson;
Pre-encoded BSON document.
# Longer version my $raw = {'$bson' => $bson}; # Embed pre-encoded BSON document my $first = bson_encode {foo => 'bar'}; my $second = bson_encode {test => bson_raw $first};
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.
# "1360626536.748" bson_time(1360626536748)->to_epoch; # "2013-02-11T23:48:56.748Z" bson_time(1360626536748)->to_datetime;
my $true = bson_true;
Create new BSON element of the boolean type true.
my $timestamp = bson_ts 23, 24;
Create new BSON element of the timestamp type with Mango::BSON::Timestamp.
my $bytes = encode_cstring $cstring;
Encode cstring.
Mango, Mojolicious::Guides, http://mojolicio.us.
To install Mango, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mango
CPAN shell
perl -MCPAN -e shell install Mango
For more information on module installation, please visit the detailed CPAN module installation guide.