> For the complete MongoDB documentation index, see www.mongodb.com/docs/llms.txt

# cursor.isExhausted() (mongosh method)

**Important: mongosh Method**

This page documents a [`mongosh`](https://www.mongodb.com/docs/mongodb-shell.md#mongodb-binary-bin.mongosh) method. This is *not* the documentation for a language-specific driver, such as Node.js.

For MongoDB API drivers, refer to the language-specific [MongoDB driver documentation.](https://www.mongodb.com/docs/drivers/)

Boolean

[`cursor.isExhausted()`](https://www.mongodb.com/docs/manual/reference/method/cursor.isexhausted.md#mongodb-method-cursor.isExhausted) returns `false` if documents remain in the current document batch read by the cursor. Otherwise, returns `true`.

## Compatibility

This method is available in deployments hosted in the following environments:

- [MongoDB Atlas](https://www.mongodb.com/docs/atlas): The fully managed service for MongoDB deployments in the cloud

**Note:**

This command is supported in all MongoDB Atlas clusters. For information on Atlas support for all commands, see [Unsupported Commands.](https://www.mongodb.com/docs/atlas/unsupported-commands/)

- [MongoDB Enterprise](https://www.mongodb.com/docs/manual/administration/install-enterprise.md#std-label-install-mdb-enterprise): The subscription-based, self-managed version of MongoDB

- [MongoDB Community](https://www.mongodb.com/docs/manual/administration/install-community.md#std-label-install-mdb-community-edition): The source-available, free-to-use, and self-managed version of MongoDB

## Behavior

### Tailable Cursors

You can use `isExhausted()` with a [tailable cursor](https://www.mongodb.com/docs/manual/core/tailable-cursors.md#std-label-tailable-cursors-landing-page). A tailable cursor stays open even if no documents remain in the current batch. Other cursors are automatically closed when no documents remain.

### Change Streams

You cannot use `isExhausted()` with [change streams](https://www.mongodb.com/docs/manual/changestreams.md#std-label-changeStreams). Instead, to examine if:

- documents remain in a change stream cursor, use [`cursor.tryNext()`.](https://www.mongodb.com/docs/manual/reference/method/cursor.trynext.md#mongodb-method-cursor.tryNext)

- a change stream cursor is closed, use [`cursor.isClosed()`.](https://www.mongodb.com/docs/manual/reference/method/cursor.isclosed.md#mongodb-method-cursor.isClosed)

For change stream examples, see [Watch Example](https://www.mongodb.com/docs/manual/reference/method/db.watch.md#std-label-db.watch-example) and [Change Stream Images Example.](https://www.mongodb.com/docs/manual/reference/method/db.collection.watch.md#std-label-db.collection.watch-change-streams-pre-and-post-images-example)

## Examples

This section contains examples that use a cursor to read documents from a collection with temperature readings from a weather sensor. You'll see examples of `isExhausted()`.

1. Create the collection

   Run:

   ```javascript
   db.sensor.insertMany( [
      { _id: 0, temperature: 12 },
      { _id: 1, temperature: 23 }
   ] )
   ```

2. Create a cursor variable

   Create a cursor variable named `sensorCursor` that reads the documents from the `sensor` collection:

   ```javascript
   var sensorCursor = db.sensor.find()
   ```

3. Count the number of documents in the cursor

   Run:

   ```javascript
   sensorCursor.count()
   ```

   The output is `2` because there are two documents in the collection.

4. Return the first document from the cursor

   Run:

   ```javascript
   sensorCursor.next()
   ```

   Output:

   ```javascript
   { _id: 0, temperature: 12 }
   ```

5. Examine the `isExhausted()` value

   Run:

   ```javascript
   sensorCursor.isExhausted()
   ```

   The output is `false` because there is a remaining document in `sensorCursor`.

6. Return the next document from the cursor

   Run:

   ```javascript
   sensorCursor.next()
   ```

   Output:

   ```javascript
   { _id: 1, temperature: 23 }
   ```

7. Attempt to return the next document from the cursor

   Run:

   ```javascript
   sensorCursor.next()
   ```

   There are no more documents and the example returns `null`.

8. Examine the `isExhausted()` value

   Run:

   ```javascript
   sensorCursor.isExhausted()
   ```

   There are no more documents and `isExhausted()` returns `true`.
