MongoDB::Cursor - A cursor/iterator for Mongo query results
while (my $object = $cursor->next) { ... } my @objects = $cursor->all;
Cloning instances of this class is disabled in Perl 5.8.7+, so forked threads will have to create their own database queries.
Core documentation on cursors: http://dochub.mongodb.org/core/cursors.
$MongoDB::Cursor::slave_okay = 1;
Whether it is okay to run queries on the slave. Defaults to 0.
Deprecated, use MongoDB::Connection::query_timeout instead.
How many milliseconds to wait for a response from the server. Set to 30000 (30 seconds) by default. -1 waits forever (or until TCP times out, which is usually a long time).
This value is overridden by MongoDB::Connection::query_timeout and never used.
MongoDB::Connection::query_timeout
If this cursor has queried the database yet. Methods mofifying the query will complain if they are called after the database is queried.
$cursor->immortal(1);
Ordinarily, a cursor "dies" on the database server after a certain length of time (approximately 10 minutes), to prevent inactive cursors from hogging resources. This option sets that a cursor should not die until all of its results have been fetched or it goes out of scope in Perl.
Boolean value, defaults to 0.
$cursor->tailable(1);
If a cursor should be tailable. Tailable cursors can only be used on capped collections and are similar to the tail -f command: they never die and keep returning new results as more is added to a collection.
tail -f
They are often used for getting log messages.
$cursor->slave_okay(1);
If a query can be done on a slave database server.
$coll->insert({name => "Fred", age => 20}); my $cursor = $coll->query->fields({ name => 1 }); my $obj = $cursor->next; $obj->{name}; "Fred" $obj->{age}; # undef
Selects which fields are returned. The default is all fields. _id is always returned.
# sort by name, descending my $sort = {"name" => -1}; $cursor = $coll->query->sort($sort);
Adds a sort to the query. Argument is either a hash reference or a Tie::IxHash. Returns this cursor for chaining operations.
$per_page = 20; $cursor = $coll->query->limit($per_page);
Returns a maximum of N results. Returns this cursor for chaining operations.
$page_num = 7; $per_page = 100; $cursor = $coll->query->limit($per_page)->skip($page_num * $per_page);
Skips the first N results. Returns this cursor for chaining operations.
See also core documentation on limit: http://dochub.mongodb.org/core/limit.
my $cursor = $coll->query->snapshot;
Uses snapshot mode for the query. Snapshot mode assures no duplicates are returned, or objects missed, which were present at both the start and end of the query's execution (if an object is new during the query, or deleted during the query, it may or may not be returned, even with snapshot mode). Note that short query responses (less than 1MB) are always effectively snapshotted. Currently, snapshot mode may not be used with sorting or explicit hints.
my $cursor = $coll->query->hint({'x' => 1});
Force Mongo to use a specific index for a query.
my $explanation = $cursor->explain;
This will tell you the type of cursor used, the number of records the DB had to examine as part of this query, the number of records returned by the query, and the time in milliseconds the query took to execute. Requires boolean package.
See also core documentation on explain: http://dochub.mongodb.org/core/explain.
my $num = $cursor->count; my $num = $cursor->skip(20)->count(1);
Returns the number of document this query will return. Optionally takes a boolean parameter, indicating that the cursor's limit and skip fields should be used in calculating the count.
Resets the cursor. After being reset, pre-query methods can be called on the cursor (sort, limit, etc.) and subsequent calls to next, has_next, or all will re-query the database.
while ($cursor->has_next) { ... }
Checks if there is another result to fetch.
while (my $object = $cursor->next) { ... }
Returns the next object in the cursor. Will automatically fetch more data from the server if necessary. Returns undef if no more data is available.
my @objects = $cursor->all;
Returns a list of all objects in the result.
Kristina Chodorow <kristina@mongodb.org>
To install MongoDB, copy and paste the appropriate command in to your terminal.
cpanm
cpanm MongoDB
CPAN shell
perl -MCPAN -e shell install MongoDB
For more information on module installation, please visit the detailed CPAN module installation guide.