Provided by: libmango-perl_0.22-1_all bug

NAME

       Mango::Collection - MongoDB collection

SYNOPSIS

         use Mango::Collection;

         my $collection = Mango::Collection->new(db => $db);
         my $cursor     = $collection->find({foo => 'bar'});

DESCRIPTION

       Mango::Collection is a container for MongoDB collections used by Mango::Database.

ATTRIBUTES

       Mango::Collection implements the following attributes.

   db
         my $db      = $collection->db;
         $collection = $collection->db(Mango::Database->new);

       Mango::Database object this collection belongs to.

   name
         my $name    = $collection->name;
         $collection = $collection->name('bar');

       Name of this collection.

METHODS

       Mango::Collection inherits all methods from Mojo::Base and implements the following new
       ones.

   aggregate
         my $docs = $collection->aggregate(
           [{'$group' => {_id => undef, total => {'$sum' => '$foo'}}}]);
         my $cursor = $collection->aggregate(
           [{'$match' => {'$gt' => 23}}], {cursor => {}});
         my $collection = $collection->aggregate(
           [{'$match' => {'$gt' => 23}}, {'$out' => 'some_collection'}]);

       Aggregate collection with aggregation framework, additional options will be passed along
       to the server verbatim.. You can also append a callback to perform operation non-blocking.

         my $pipeline = [{'$group' => {_id => undef, total => {'$sum' => '$foo'}}}];
         $collection->aggregate($pipeline => sub {
           my ($collection, $err, $docs) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

   build_index_name
         my $name = $collection->build_index_name(bson_doc(foo => 1, bar => -1));
         my $name = $collection->build_index_name({foo => 1});

       Build name for index specification, the order of keys matters for compound indexes.

   create
         $collection->create;
         $collection->create({capped => bson_true, max => 5, size => 10000});

       Create collection. You can also append a callback to perform operation non-blocking.

         $collection->create({capped => bson_true, max => 5, size => 10000} => sub {
           my ($collection, $err) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

   drop
         $collection->drop;

       Drop collection. You can also append a callback to perform operation non-blocking.

         $collection->drop(sub {
           my ($collection, $err) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

   drop_index
         $collection->drop_index('foo');

       Drop index. You can also append a callback to perform operation non-blocking.

         $collection->drop_index(foo => sub {
           my ($collection, $err) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

   ensure_index
         $collection->ensure_index(bson_doc(foo => 1, bar => -1));
         $collection->ensure_index({foo => 1});
         $collection->ensure_index({foo => 1}, {unique => bson_true});

       Make sure an index exists, the order of keys matters for compound indexes, additional
       options will be passed along to the server verbatim. You can also append a callback to
       perform operation non-blocking.

         $collection->ensure_index(({foo => 1}, {unique => bson_true}) => sub {
           my ($collection, $err) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

   find
         my $cursor = $collection->find;
         my $cursor = $collection->find({foo => 'bar'});
         my $cursor = $collection->find({foo => 'bar'}, {foo => 1});

       Get Mango::Cursor object for query.

   find_and_modify
         my $doc = $collection->find_and_modify(
           {query => {foo => 'bar'}, update => {'$set' => {foo => 'baz'}}});

       Update document atomically. You can also append a callback to perform operation non-
       blocking.

         my $opts = {query => {foo => 'bar'}, update => {'$set' => {foo => 'baz'}}};
         $collection->find_and_modify($opts => sub {
           my ($collection, $err, $doc) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

   find_one
         my $doc = $collection->find_one({foo => 'bar'});
         my $doc = $collection->find_one({foo => 'bar'}, {foo => 1});
         my $doc = $collection->find_one($oid, {foo => 1});

       Find one document. You can also append a callback to perform operation non-blocking.

         $collection->find_one({foo => 'bar'} => sub {
           my ($collection, $err, $doc) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

   full_name
         my $name = $collection->full_name;

       Full name of this collection.

   index_information
         my $info = $collection->index_information;

       Get index information for collection. You can also append a callback to perform operation
       non-blocking.

         $collection->index_information(sub {
           my ($collection, $err, $info) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

   insert
         my $oid  = $collection->insert({foo => 'bar'});
         my $oids = $collection->insert([{foo => 'bar'}, {baz => 'yada'}]);

       Insert one or more documents into collection. You can also append a callback to perform
       operation non-blocking.

         $collection->insert({foo => 'bar'} => sub {
           my ($collection, $err, $oid) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

   map_reduce
         my $foo  = $collection->map_reduce($map, $reduce, {out => 'foo'});
         my $docs = $collection->map_reduce($map, $reduce, {out => {inline => 1}});
         my $docs = $collection->map_reduce(
           bson_code($map), bson_code($reduce), {out => {inline => 1}});

       Perform map/reduce operation on this collection, additional options will be passed along
       to the server verbatim. You can also append a callback to perform operation non-blocking.

         $collection->map_reduce(($map, $reduce, {out => {inline => 1}}) => sub {
             my ($collection, $err, $docs) = @_;
             ...
           }
         );
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

   options
         my $doc = $collection->options;

       Get options for this collection. You can also append a callback to perform operation non-
       blocking.

         $collection->options(sub {
           my ($collection, $err, $doc) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

   remove
         my $doc = $collection->remove;
         my $doc = $collection->remove({foo => 'bar'});
         my $doc = $collection->remove({foo => 'bar'}, {single => 1});

       Remove documents from collection. You can also append a callback to perform operation non-
       blocking.

         $collection->remove(({foo => 'bar'}, {single => 1}) => sub {
           my ($collection, $err, $doc) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

       These options are currently available:

       single
           single => 1

         Remove only one document.

   save
         my $oid = $collection->save({foo => 'bar'});

       Save document to collection. You can also append a callback to perform operation non-
       blocking.

         $collection->save({foo => 'bar'} => sub {
           my ($collection, $err, $oid) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

   stats
         my $stats = $collection->stats;

       Get collection statistics. You can also append a callback to perform operation non-
       blocking.

         $collection->stats(sub {
           my ($collection, $err, $stats) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

   update
         my $doc = $collection->update({foo => 'bar'}, {foo => 'baz'});
         my $doc = $collection->update({foo => 'bar'}, {foo => 'baz'}, {multi => 1});

       Update document in collection. You can also append a callback to perform operation non-
       blocking.

         $collection->update(({foo => 'bar'}, {foo => 'baz'}, {multi => 1}) => sub {
           my ($collection, $err, $doc) = @_;
           ...
         });
         Mojo::IOLoop->start unless Mojo::IOLoop->is_running;

       These options are currently available:

       multi
           multi => 1

         Update more than one document.

       upsert
           upsert => 1

         Insert document if none could be updated.

SEE ALSO

       Mango, Mojolicious::Guides, <http://mojolicio.us>.