Nicholas Perez > MongoDBx-AutoDeref > MongoDBx::AutoDeref

Download:
MongoDBx-AutoDeref-1.110560.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  0
View/Report Bugs
Module Version: 1.110560   Source  

NAME ^

MongoDBx::AutoDeref - Automagically dereference MongoDB DBRefs lazily

VERSION ^

version 1.110560

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}->fetch;
    
    # $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 metaclasses for MongoDB::Cursor and MongoDB::Collection. 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 MongoDBx::AutoDeref::DBRef objects. When doing updates and inserts back using MongoDB::Collection, the inflated objects will be deflated back into DBRefs.

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.

syntax highlighting: