NAME
MongoDBx::AutoDeref - Automagically dereference MongoDB DBRefs lazily
VERSION
version 1.110520
SYNOPSIS
use MongoDB; #or omit this
use MongoDBx::AutoDeref;
my $connection = MongoDB::Connection->new();
my $database = $connection->get_database('foo');
my $collection = $database->get_collection('bar');
my $doc1 = { baz => 'flarg' };
my $doc2 = { yarp => 'floop' };
my $id = $collection->insert($doc1);
$doc2->{dbref} = {'$db' => 'foo', '$ref' => 'bar', '$id' => $id };
my $id2 = $collection->insert($doc2);
my $fetched_doc2 = $collection->find_one({_id => $id2 });
my $fetched_doc1 = $fetched_doc2->{dbref};
# $fetched_doc1 == $doc1
DESCRIPTION
Using Mongo drivers from other languages and miss driver support for expanding DBRefs? Then this module is for you. Simple 'use' it to have this ability added to the core MongoDB driver.
Please read more about DBRefs: http://www.mongodb.org/display/DOCS/Database+References
If more information is necessary on the guts, please see MongoDBx::AutoDeref::LookMeUp
CLASS_METHODS
import
Upon use (or require+import), this class method will load MongoDB (if it isn't already loaded), and alter the metaclass MongoDB::Cursor. Internally, everything is cursor driven so the result returned is ultimately from the "next" in MongoDB::Cursor method. So this method is advised to apply the MongoDBx::AutoDeref::LookMeUp sieve to the returned result which replaces all DBRefs with a lazy scalar that does the lookup upon access.
AUTHOR
Nicholas R. Perez <nperez@cpan.org>
COPYRIGHT AND LICENSE
This software is copyright (c) 2010 by Nicholas R. Perez <nperez@cpan.org>.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.