The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package Person;
use Moose;
with 'MooseX::Mongo::Document' => { pk=>['name'] };

has 'name' => ( is=>'rw', isa=>'Str', required=>1 );
has 'age' => ( is=>'rw', isa=>'Int', );
has 'spouse' => ( is=>'rw', isa=>'Person' );

package main;
use v5.10;
use MooseX::Mongo;
use Benchmark;
my $db = MooseX::Mongo->db( 'mediadb' );
$db->run_command({ drop=>'person' }); 

{
      my $o = do {  my $homer = Person->new( name => "Homer Simpson" );
        my $marge = Person->new( name => "Marge Simpson" ); 
        $homer->spouse($marge);
        $marge->spouse($homer);
		$homer };
	
	timethis( 7000, sub {  $o->save } );
}
#$r->save;

#my $r2 = Request->find->next;
#say $r2->dump;

{
	use KiokuDB;
	use KiokuDB::Backend::MongoDB;
	
	my $conn = MongoDB::Connection->new(host => 'localhost');
	my $db = $conn->get_database('mediadb');

	my $rc = KiokuDB::Backend::MongoDB->new('collection' => $db->get_collection('person') );
	my $coll = KiokuDB->new( backend => $rc, allow_classes=>['HTTP::Headers'] );

	my $s     = $coll->new_scope;
    my $homer =  do {  my $homer = Person->new( name => "Homer Simpson" );
        my $marge = Person->new( name => "Marge Simpson" ); 
        $homer->spouse($marge);
        $marge->spouse($homer);
		$homer };
	#$coll->store($homer);
	timethis( 7000, sub {  $coll->store($homer ) } );
}