---
name: "Mango::Cursor"
section: "3pm"
platform: "linux"
package: "libmango-perl"
version: "1.30-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Mango::Cursor"
---

# Mango::Cursor(3pm)

MongoDB cursor

## NAME

Mango::Cursor - MongoDB cursor

## SYNOPSIS

```
  use Mango::Cursor;
  my $cursor = Mango::Cursor->new(collection => $collection);
  my $docs   = $cursor->all;
```

## DESCRIPTION

Mango::Cursor is a container for MongoDB cursors used by Mango::Collection.

## ATTRIBUTES

Mango::Cursor implements the following attributes.

### batch\_size

```
  my $size = $cursor->batch_size;
  $cursor  = $cursor->batch_size(10);
```

Number of documents to fetch in one batch, defaults to `0`.

### collection

```
  my $collection = $cursor->collection;
  $cursor        = $cursor->collection(Mango::Collection->new);
```

Mango::Collection object this cursor belongs to.

### id

```
  my $id  = $cursor->id;
  $cursor = $cursor->id(123456);
```

Cursor id.

### limit

```
  my $limit = $cursor->limit;
  $cursor   = $cursor->limit(10);
```

Limit the number of documents, defaults to `0`.

## METHODS

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

### add\_batch

```
  $cursor = $cursor->add_batch($docs);
```

Add batch of documents to cursor.

### all

```
  my $docs = $cursor->all;
```

Fetch all documents at once. You can also append a callback to perform operation non-blocking.

```
  $cursor->all(sub {
    my ($cursor, $err, $docs) = @_;
    ...
  });
  Mojo::IOLoop->start unless Mojo::IOLoop->is_running;
```

### next

```
  my $doc = $cursor->next;
```

Fetch next document. You can also append a callback to perform operation non-blocking.

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

### rewind

```
  $cursor->rewind;
```

Rewind cursor and kill it on the server. You can also append a callback to perform operation non-blocking.

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

### num\_to\_return

```
  my $num = $cursor->num_to_return;
```

Number of results to return with next `"QUERY"` or `"GET_MORE"` operation based on "batch\_size" and "limit".

## SEE ALSO

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