NAME

MongoDB::Collection - A Mongo Collection

VERSION

version 0.26

ATTRIBUTES

name

The name of the collection.

full_name

The full_name of the collection, including the namespace of the database it's in.

METHODS

query ($query, \%attrs?)

my $cursor = $collection->query({ i => { '$gt' => 42 } });

my $cursor = $collection->query({ }, { limit => 10, skip => 10 });

my $cursor = $collection->query(
    { location => "Vancouver" },
    { sort_by  => { age => 1 } },
);

Executes the given $query and returns a MongoDB::Cursor with the results. $query can be a hash reference, Tie::IxHash, or array reference (with an even number of elements). A hash reference of attributes may be passed as the second argument.

Valid query attributes are:

limit

Limit the number of results.

skip

Skip a number of results.

sort_by

Order results.

find_one (\%query)

my $object = $collection->find_one({ name => 'Resi' });

Executes the given $query and returns the first object matching it. $query can be a hash reference, Tie::IxHash, or array reference (with an even number of elements).

insert ($object)

my $id = $collection->insert({ name => 'mongo', type => 'database' });

Inserts the given $object into the database and returns it's id value. $object can be a hash reference, a reference to an array with an even number of elements, or a Tie::IxHash. The id is the _id value specified in the data or a MongoDB::OID.

batch_insert (@array)

my @ids = $collection->batch_insert(({name => "Joe"}, {name => "Fred"}, {name => "Sam"}));

Inserts each of the documents in the array into the database and returns an array of their _id fields.

update (\%criteria, \%object, \%options?)

$collection->update({'x' => 3}, {'$inc' => {'count' => -1}, {"upsert" => 1, "multiple" => 1});

Updates an existing $object matching $criteria in the database.

update can take a hash reference of options. The options currently supported are:

upsert If no object matching $criteria is found, $object will be inserted.
multiple All of the documents that match $criteria will be updated, not just the first document found.

remove (\%query?, $just_one?)

$collection->remove({ answer => { '$ne' => 42 } });

Removes all objects matching the given $query from the database. If no parameters are given, removes all objects from the collection (but does not delete indexes, as MongoDB::Collection::drop does). Boolean parameter $just_one causes only one matching document to be removed.

ensure_index ($keys, $direction?, $unique?)

$collection->ensure_index([qw/foo bar/]);

Makes sure the given @keys of this collection are indexed. keys can be an array reference, hash reference, or Tie::IxHash. The optional index direction defaults to ascending.

count ($query?)

my $n_objects = $collection->count({ name => 'Bob' });

Counts the number of objects in this collection that match the given $query. If no query is given, the total number of objects in the collection is returned.

validate

$collection->validate;

Asks the server to validate this collection. Returns a hash of the form:

{
    'ok' => '1',
    'ns' => 'foo.bar',
    'result' => info
}

where info is a string of information about the collection.

drop_indexes

$collection->drop_indexes;

Removes all indexes from this collection.

drop_index ($index_name)

$collection->drop_index('foo_1');

Removes an index called $index_name from this collection. Use MongoDB::Collection::get_indexes to find the index name.

get_indexes

my @indexes = $collection->get_indexes;

Returns a list of all indexes of this collection. Each index contains ns, name, and key fields of the form:

{
    'ns' => 'db_name.collection_name',
    'name' => 'index_name',
    'key' => {
        'key1' => dir1,
        'key2' => dir2,
        ...
        'keyN' => dirN
    }
}

where dirX is 1 or -1, depending on if the index is ascending or descending on that key.

drop

$collection->drop;

Deletes a collection as well as all of its indexes.

AUTHOR

Kristina Chodorow <kristina@mongodb.org>