Help language development. Donate to The Perl Foundation

BSON cpan:MARTIMM last updated on 2019-12-12


BSON support

Face Build Status AppVeyor Build Status License

Implements BSON specification.

Installing BSON

Use zef to install the package like so.

$ zef install BSON

When installing MongoDB, BSON will be installed automatically as a dependency.

Version PERL 6 and MoarVM

This module is tested using the latest perl6 version on MoarVM


A BSON::Document class has been developed. This structure will keep the order and because of that there is no need for cumbersome operations. At the moment it is much slower than the hashed variant even with the encoding happening in the background and parallel.

use BSON::Document;

my BSON::Javascript $js .= new(:javascript('function(x){return x;}'));
my BSON::Javascript $js-scope .= new(
  :javascript('function(x){return x;}'),
  :scope( (nn => 10, a1 => 2))

my BSON::Binary $bin .= new(:data(Buf,new(... some binary data ...));
my BSON::Regex $rex .= new( :regex('abc|def'), :options<is>);

my BSON::Document $d .= new: ( 'a number' => 10, 'some text' => 'bla die bla');
$d<oid> =;
$d<javascript> = $js;
$d<js-scope> = $js-scope;
$d<datetime> =;
$d<bin> = $bin;
$d<rex> = $rex;
$d<null> = Any;
$d<array> = [ 10, 'abc', 345];
$d<subdoc1> = a1 => 10, bb => 11;
$d<subdoc1><b1> = q => 255;

my Buf $enc-doc = $d.encode;

my BSON::Document $new-doc .= new;


BSON/Document.pod * BSON::Binary * BSON::Document


Original creator of the modules is Pawel Pabian (2011-2015, v0.3)(bbkr on github). Current maintainer Marcel Timmerman (2015-present)(MARTIMM on github).


Dan Zwell (lefth on github)