[Mongo Portable](../README.md) > [Cursor](../classes/cursor.md)

# Class: Cursor

Cursor
*__module__*: Cursor

*__since__*: 0.0.1

*__author__*: Eduardo Astolfi [eduardo.astolfi91@gmail.com](mailto:eduardo.astolfi91@gmail.com)

*__copyright__*: 2016 Eduardo Astolfi [eduardo.astolfi91@gmail.com](mailto:eduardo.astolfi91@gmail.com)

*__license__*: MIT Licensed

*__classdesc__*: Cursor class that maps a MongoDB-like cursor

## Hierarchy

**Cursor**

## Index

### Constructors

* [constructor](cursor.md#constructor)

### Properties

* [cursorPosition](cursor.md#cursorposition)
* [dbObjects](cursor.md#dbobjects)
* [documents](cursor.md#documents)
* [fetchMode](cursor.md#fetchmode)
* [fields](cursor.md#fields)
* [indexes](cursor.md#indexes)
* [limitValue](cursor.md#limitvalue)
* [logger](cursor.md#logger)
* [selector](cursor.md#selector)
* [selectorCompiled](cursor.md#selectorcompiled)
* [selectorId](cursor.md#selectorid)
* [skipValue](cursor.md#skipvalue)
* [sortCompiled](cursor.md#sortcompiled)
* [sortValue](cursor.md#sortvalue)
* [sorted](cursor.md#sorted)
* [COLSCAN](cursor.md#colscan)
* [IDXSCAN](cursor.md#idxscan)

### Methods

* [batchSize](cursor.md#batchsize)
* [close](cursor.md#close)
* [comment](cursor.md#comment)
* [count](cursor.md#count)
* [explain](cursor.md#explain)
* [fetch](cursor.md#fetch)
* [fetchAll](cursor.md#fetchall)
* [fetchOne](cursor.md#fetchone)
* [forEach](cursor.md#foreach)
* [hasNext](cursor.md#hasnext)
* [hint](cursor.md#hint)
* [itcount](cursor.md#itcount)
* [limit](cursor.md#limit)
* [map](cursor.md#map)
* [max](cursor.md#max)
* [maxScan](cursor.md#maxscan)
* [maxTimeMS](cursor.md#maxtimems)
* [min](cursor.md#min)
* [next](cursor.md#next)
* [noCursorTimeout](cursor.md#nocursortimeout)
* [objsLeftInBatch](cursor.md#objsleftinbatch)
* [pretty](cursor.md#pretty)
* [readConcern](cursor.md#readconcern)
* [readPref](cursor.md#readpref)
* [returnKey](cursor.md#returnkey)
* [rewind](cursor.md#rewind)
* [setSorting](cursor.md#setsorting)
* [showRecordId](cursor.md#showrecordid)
* [size](cursor.md#size)
* [skip](cursor.md#skip)
* [snapshot](cursor.md#snapshot)
* [sort](cursor.md#sort)
* [tailable](cursor.md#tailable)
* [toArray](cursor.md#toarray)
* [project](cursor.md#project)
* [sort](cursor.md#sort-1)

### Object literals

* [defaultOptions](cursor.md#defaultoptions)

---

## Constructors

<a id="constructor"></a>

###  constructor

⊕ **new Cursor**(documents: *`any`*, selection: *`any`*, fields?: *`any`*, options?: *`object`*): [Cursor](cursor.md)

*Defined in [collection/Cursor.ts:65](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L65)*

**Parameters:**

| Param | Type | Default value | Description |
| ------ | ------ | ------ | ------ |
| documents | `any` | - |  The list of documents |
| selection | `any` | - |
| `Optional` fields | `any` | - |
| `Default value` options | `object` |  {} |

**Returns:** [Cursor](cursor.md)

___

## Properties

<a id="cursorposition"></a>

###  cursorPosition

**● cursorPosition**: *`any`*

*Defined in [collection/Cursor.ts:57](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L57)*

___
<a id="dbobjects"></a>

###  dbObjects

**● dbObjects**: *`any`*

*Defined in [collection/Cursor.ts:56](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L56)*

___
<a id="documents"></a>

###  documents

**● documents**: *`any`*

*Defined in [collection/Cursor.ts:44](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L44)*

___
<a id="fetchmode"></a>

###  fetchMode

**● fetchMode**: *`any`*

*Defined in [collection/Cursor.ts:53](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L53)*

___
<a id="fields"></a>

###  fields

**● fields**: *`any`*

*Defined in [collection/Cursor.ts:46](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L46)*

___
<a id="indexes"></a>

###  indexes

**● indexes**: *`any`* =  null

*Defined in [collection/Cursor.ts:54](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L54)*

___
<a id="limitvalue"></a>

###  limitValue

**● limitValue**: *`any`*

*Defined in [collection/Cursor.ts:48](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L48)*

___
<a id="logger"></a>

### `<Protected>` logger

**● logger**: *`JSWLogger`*

*Defined in [collection/Cursor.ts:59](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L59)*

___
<a id="selector"></a>

###  selector

**● selector**: *`any`*

*Defined in [collection/Cursor.ts:45](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L45)*

___
<a id="selectorcompiled"></a>

###  selectorCompiled

**● selectorCompiled**: *`any`*

*Defined in [collection/Cursor.ts:51](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L51)*

___
<a id="selectorid"></a>

###  selectorId

**● selectorId**: *`any`*

*Defined in [collection/Cursor.ts:52](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L52)*

___
<a id="skipvalue"></a>

###  skipValue

**● skipValue**: *`any`*

*Defined in [collection/Cursor.ts:47](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L47)*

___
<a id="sortcompiled"></a>

###  sortCompiled

**● sortCompiled**: *`any`*

*Defined in [collection/Cursor.ts:55](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L55)*

___
<a id="sortvalue"></a>

###  sortValue

**● sortValue**: *`any`*

*Defined in [collection/Cursor.ts:49](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L49)*

___
<a id="sorted"></a>

###  sorted

**● sorted**: *`boolean`* = false

*Defined in [collection/Cursor.ts:50](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L50)*

___
<a id="colscan"></a>

### `<Static>` COLSCAN

**● COLSCAN**: *`string`* = "colscan"

*Defined in [collection/Cursor.ts:41](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L41)*

___
<a id="idxscan"></a>

### `<Static>` IDXSCAN

**● IDXSCAN**: *`string`* = "idxscan"

*Defined in [collection/Cursor.ts:42](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L42)*

___

## Methods

<a id="batchsize"></a>

###  batchSize

▸ **batchSize**(): `void`

*Defined in [collection/Cursor.ts:331](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L331)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="close"></a>

###  close

▸ **close**(): `void`

*Defined in [collection/Cursor.ts:339](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L339)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="comment"></a>

###  comment

▸ **comment**(): `void`

*Defined in [collection/Cursor.ts:347](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L347)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="count"></a>

###  count

▸ **count**(): `any`

*Defined in [collection/Cursor.ts:242](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L242)*

Obtains the total of documents of the cursor
*__method__*: Cursor#count

**Returns:** `any`
The total of documents in the cursor

___
<a id="explain"></a>

###  explain

▸ **explain**(): `void`

*Defined in [collection/Cursor.ts:355](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L355)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="fetch"></a>

###  fetch

▸ **fetch**(): `any`

*Defined in [collection/Cursor.ts:209](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L209)*

Alias for {@link Cursor#fetchAll}
*__method__*: Cursor#fetch

**Returns:** `any`

___
<a id="fetchall"></a>

###  fetchAll

▸ **fetchAll**(): `any`

*Defined in [collection/Cursor.ts:220](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L220)*

Fetch all documents in the cursor
*__method__*: Cursor#fetchAll

**Returns:** `any`
All the documents contained in the cursor

___
<a id="fetchone"></a>

###  fetchOne

▸ **fetchOne**(): `any`

*Defined in [collection/Cursor.ts:231](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L231)*

Retrieves the next document in the cursor
*__method__*: Cursor#fetchOne

**Returns:** `any`
The next document in the cursor

___
<a id="foreach"></a>

###  forEach

▸ **forEach**(callback: *`any`*): `void`

*Defined in [collection/Cursor.ts:157](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L157)*

Iterates over the cursor, calling a callback function
*__method__*: Cursor#forEach

**Parameters:**

| Param | Type |
| ------ | ------ |
| callback | `any` |

**Returns:** `void`

___
<a id="hasnext"></a>

###  hasNext

▸ **hasNext**(): `boolean`

*Defined in [collection/Cursor.ts:191](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L191)*

Checks if the cursor has one document to be fetched
*__method__*: Cursor#hasNext

**Returns:** `boolean`
True if we can fetch one more document

___
<a id="hint"></a>

###  hint

▸ **hint**(): `void`

*Defined in [collection/Cursor.ts:363](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L363)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="itcount"></a>

###  itcount

▸ **itcount**(): `void`

*Defined in [collection/Cursor.ts:371](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L371)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="limit"></a>

###  limit

▸ **limit**(limit: *`any`*): `this`

*Defined in [collection/Cursor.ts:320](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L320)*

Set the max number of document to fetch
*__method__*: Cursor#limit

**Parameters:**

| Param | Type | Description |
| ------ | ------ | ------ |
| limit | `any` |  The max number of documents |

**Returns:** `this`
This instance so it can be chained with other methods

___
<a id="map"></a>

###  map

▸ **map**(callback: *`any`*): `any`[]

*Defined in [collection/Cursor.ts:174](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L174)*

Iterates over the cursor, returning a new array with the documents affected by the callback function
*__method__*: Cursor#map

**Parameters:**

| Param | Type |
| ------ | ------ |
| callback | `any` |

**Returns:** `any`[]
The documents after being affected with the callback function

___
<a id="max"></a>

###  max

▸ **max**(): `void`

*Defined in [collection/Cursor.ts:395](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L395)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="maxscan"></a>

###  maxScan

▸ **maxScan**(): `void`

*Defined in [collection/Cursor.ts:379](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L379)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="maxtimems"></a>

###  maxTimeMS

▸ **maxTimeMS**(): `void`

*Defined in [collection/Cursor.ts:387](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L387)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="min"></a>

###  min

▸ **min**(): `void`

*Defined in [collection/Cursor.ts:403](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L403)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="next"></a>

###  next

▸ **next**(): `any`

*Defined in [collection/Cursor.ts:200](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L200)*

Alias for {@link Cursor#fetchOne}
*__method__*: Cursor#next

**Returns:** `any`

___
<a id="nocursortimeout"></a>

###  noCursorTimeout

▸ **noCursorTimeout**(): `void`

*Defined in [collection/Cursor.ts:411](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L411)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="objsleftinbatch"></a>

###  objsLeftInBatch

▸ **objsLeftInBatch**(): `void`

*Defined in [collection/Cursor.ts:419](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L419)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="pretty"></a>

###  pretty

▸ **pretty**(): `void`

*Defined in [collection/Cursor.ts:427](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L427)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="readconcern"></a>

###  readConcern

▸ **readConcern**(): `void`

*Defined in [collection/Cursor.ts:435](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L435)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="readpref"></a>

###  readPref

▸ **readPref**(): `void`

*Defined in [collection/Cursor.ts:443](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L443)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="returnkey"></a>

###  returnKey

▸ **returnKey**(): `void`

*Defined in [collection/Cursor.ts:451](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L451)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="rewind"></a>

###  rewind

▸ **rewind**(): `void`

*Defined in [collection/Cursor.ts:145](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L145)*

Moves a cursor to the begining
*__method__*: Cursor#rewind

**Returns:** `void`

___
<a id="setsorting"></a>

###  setSorting

▸ **setSorting**(spec: *`any`*): `this`

*Defined in [collection/Cursor.ts:255](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L255)*

Set the sorting of the cursor
*__method__*: Cursor#sort

**Parameters:**

| Param | Type | Description |
| ------ | ------ | ------ |
| spec | `any` |  The sorting specification |

**Returns:** `this`
This instance so it can be chained with other methods

___
<a id="showrecordid"></a>

###  showRecordId

▸ **showRecordId**(): `void`

*Defined in [collection/Cursor.ts:459](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L459)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="size"></a>

###  size

▸ **size**(): `void`

*Defined in [collection/Cursor.ts:467](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L467)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="skip"></a>

###  skip

▸ **skip**(skip: *`any`*): `this`

*Defined in [collection/Cursor.ts:303](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L303)*

Set the number of document to skip when fetching the cursor
*__method__*: Cursor#skip

**Parameters:**

| Param | Type | Description |
| ------ | ------ | ------ |
| skip | `any` |  The number of documents to skip |

**Returns:** `this`
This instance so it can be chained with other methods

___
<a id="snapshot"></a>

###  snapshot

▸ **snapshot**(): `void`

*Defined in [collection/Cursor.ts:475](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L475)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="sort"></a>

###  sort

▸ **sort**(spec: *`any`*): `this`

*Defined in [collection/Cursor.ts:275](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L275)*

Applies a sorting on the cursor
*__method__*: Cursor#sort

**Parameters:**

| Param | Type | Description |
| ------ | ------ | ------ |
| spec | `any` |  The sorting specification |

**Returns:** `this`
This instance so it can be chained with other methods

___
<a id="tailable"></a>

###  tailable

▸ **tailable**(): `void`

*Defined in [collection/Cursor.ts:484](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L484)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="toarray"></a>

###  toArray

▸ **toArray**(): `void`

*Defined in [collection/Cursor.ts:492](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L492)*

*__todo__*: Implement

**Returns:** `void`

___
<a id="project"></a>

### `<Static>` project

▸ **project**(doc: *`any`*, spec: *`any`*, aggregation?: *`boolean`*): `any`

*Defined in [collection/Cursor.ts:512](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L512)*

Projects the fields of one or several documents, changing the output
*__method__*: Cursor.project

**Parameters:**

| Param | Type | Default value | Description |
| ------ | ------ | ------ | ------ |
| doc | `any` | - |  The document/s that will be projected |
| spec | `any` | - |  Fields projection specification. Can be an space/comma separated list, an array, or an object |
| `Default value` aggregation | `boolean` | false |

**Returns:** `any`
The document/s after the projection

___
<a id="sort-1"></a>

### `<Static>` sort

▸ **sort**(doc: *`any`*, fields: *`any`*): `void`

*Defined in [collection/Cursor.ts:497](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L497)*

**Parameters:**

| Param | Type |
| ------ | ------ |
| doc | `any` |
| fields | `any` |

**Returns:** `void`

___

## Object literals

<a id="defaultoptions"></a>

### `<Private>` defaultOptions

**defaultOptions**: *`object`*

*Defined in [collection/Cursor.ts:61](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L61)*

<a id="defaultoptions.limit-1"></a>

####  limit

**● limit**: *`number`* = 15

*Defined in [collection/Cursor.ts:63](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L63)*

___
<a id="defaultoptions.skip-1"></a>

####  skip

**● skip**: *`number`* = 0

*Defined in [collection/Cursor.ts:62](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L62)*

___
<a id="defaultoptions.sort-2"></a>

####  sort

**● sort**: *`null`* =  null

*Defined in [collection/Cursor.ts:64](https://github.com/EastolfiWebDev/MongoPortable/blob/d5d3826/src/collection/Cursor.ts#L64)*

___

___

