Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions docs/scripting/db/cursor/array.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
title: array(_and_close)
alias: array_and_close
---

Retrieve all documents of the cursor, and close it.

## Syntax

```
let cursor = #db.f(query, projection)
cursor.array()
```

or

```
let cursor = #db.f(query, projection)
cursor.array_and_close()
```

### Parameters

No parameters.

### Return

Returns all documents from the cursor, as an array of objects.

## Cursor State

This function closes the cursor. If this is undesirable, try [array_and_keep_open](./array_and_keep_open).
22 changes: 22 additions & 0 deletions docs/scripting/db/cursor/array_and_keep_open.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
Retrieve all documents of the cursor, keeping it open.

## Syntax

```
let cursor = #db.f(query, projection)
cursor.array_and_keep_open()
```

### Parameters

No parameters.

### Return

Returns all documents from the cursor, as an array of objects.

## Cursor State

This function keeps the cursor open.

Try [array](./array) for a variant of this function that automatically closes the cursor.
34 changes: 34 additions & 0 deletions docs/scripting/db/cursor/close.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
Close the cursor.

This method is ((%Fidempotent%)):
calling it multiple times results in identical behavior to calling it once.

## Syntax

```
let cursor = #db.f(query, projection)
cursor.close()
```

### Parameters

No parameters.

### Return

Always returns ((%Vnull%)).

## Cursor State

This function closes the cursor.

## Example

```js
function(context, args) {
let cursor = #db.f({ type: "my_data" });

// removing the following line causes an error:
cursor.close();
}
```
34 changes: 34 additions & 0 deletions docs/scripting/db/cursor/count.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
title: count(_and_close)
alias: count_and_close
---

Retrieve the total number of documents of the cursor, and close it.

This method ignores `skip` and `limit` settings.

## Syntax

```
let cursor = #db.f(query, projection)
cursor.count()
```

or

```
let cursor = #db.f(query, projection)
cursor.count_and_close()
```

### Parameters

No parameters.

### Return

The total number of documents of this cursor, as a number.

## Cursor State

This function closes the cursor. If this is undesirable, try [count_and_keep_open](./count_and_keep_open).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This page does not exist yet

Copy link
Contributor Author

@Fayti1703 Fayti1703 Nov 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's a few missing pages:

  • count_and_keep_open (which you mentioned)
  • distinct_and_keep_open
  • each(_and_close)
  • each_and_keep_open
  • sort

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pages added:

  • count_and_keep_open (which you mentioned)

2e877cc

  • distinct_and_keep_open

7916a10

  • each(_and_close)

  • each_and_keep_open

16a8063

  • sort

951c5d3

24 changes: 24 additions & 0 deletions docs/scripting/db/cursor/count_and_keep_open.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Retrieve the total number of documents of the cursor, keeping it open.

This method ignores `skip` and `limit` settings.

## Syntax

```
let cursor = #db.f(query, projection)
cursor.count_and_keep_open()
```

### Parameters

No parameters.

### Return

The total number of documents of this cursor, as a number.

## Cursor State

This function keeps the cursor open.

Try [count](./count) for a variant of this function that automatically closes the cursor.
36 changes: 36 additions & 0 deletions docs/scripting/db/cursor/distinct.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
title: distinct(_and_close)
alias: distinct_and_close
---

Retrieve the unique values of a given field for all documents of the cursor, and close it.

This method ignores `skip` and `limit` settings.

## Syntax

```
let cursor = #db.f(query, projection)
cursor.distinct(field)
```

or

```
let cursor = #db.f(query, projection)
cursor.distinct_and_close(field)
```

### Parameters

#### field

A string naming the field to pull unique values from.

### Return

The unique values of the given field from all documents of the cursor, as an array.

## Cursor State

This function closes the cursor. If this is undesirable, try [distinct_and_keep_open](./distinct_and_keep_open).
26 changes: 26 additions & 0 deletions docs/scripting/db/cursor/distinct_and_keep_open.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
Retrieve the unique values of a given field for all documents of the cursor, keeping it open.

This method ignores `skip` and `limit` settings.

## Syntax

```
let cursor = #db.f(query, projection)
cursor.distinct_and_keep_open(field)
```

### Parameters

#### field

A string naming the field to pull unique values from.

### Return

The unique values of the given field from all documents of the cursor, as an array.

## Cursor State

This function keeps the cursor open.

Try [distinct](./distinct) for a variant of this function that automatically closes the cursor.
34 changes: 34 additions & 0 deletions docs/scripting/db/cursor/each.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
---
title: each(_and_close)
alias: each_and_close
---

Call a function on all documents of the cursor, and close it.

## Syntax

```
let cursor = #db.f(query, projection)
cursor.each(fn)
```

or

```
let cursor = #db.f(query, projection)
cursor.each_and_close(fn)
```

### Parameters

#### fn

The function to call. This function is called once per document, with the document passed as the only argument.

### Return

Always returns ((%Vundefined%)).

## Cursor state

This function closes the cursor. If this is undesirable, try [each_and_keep_open](./each_and_keep_open).
24 changes: 24 additions & 0 deletions docs/scripting/db/cursor/each_and_keep_open.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Call a function on all documents of the cursor, keeping it open.

## Syntax

```
let cursor = #db.f(query, projection)
cursor.each_and_keep_open(fn)
```

### Parameters

#### fn

The function to call. This function is called once per document, with the document passed as the only argument.

### Return

Always returns ((%Vundefined%)).

## Cursor state

This function keeps the cursor open.

Try [each](./each) for a variant of this function that automatically closes the cursor.
56 changes: 56 additions & 0 deletions docs/scripting/db/cursor/first.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
---
title: first(_and_close)
alias: first_and_close
---

Retrieve the first document of the cursor, and close it.

## Syntax

```
let cursor = #db.f(query, projection)
cursor.first()
```

or

```
let cursor = #db.f(query, projection)
cursor.first_and_close()
```

### Parameters

No parameters.

### Return

Returns the first document from the cursor as an object.
If the cursor is empty, returns ((%Vnull%)).

## Cursor State

This function closes the cursor. If this is undesirable, try [first_and_keep_open](./first_and_keep_open).

## Example

For the following examples, assume the database contains the following documents, inserted in that order:

```
{ type: "my_data", my_key: "foo", order: 2 }
{ type: "my_data", my_key: "bar", order: 1 }
```

```js
function(context, args) {
let data = #db.f({ type: "my_data" }).first();
return data; // { type: "my_data", my_key: "foo", order: 2 }
}
```

```js
function(context, args) {
let data = #db.f({ type: "my_data" }).sort({ order: 1 }).first();
return data; // { type: "my_data", my_key: "bar", order: 1 }
}
```
42 changes: 42 additions & 0 deletions docs/scripting/db/cursor/first_and_keep_open.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
Retrieve the first document of the cursor, keeping it open.

## Syntax

```
let cursor = #db.f(query, projection)
cursor.first_and_keep_open()
// continue using `cursor`...
```

### Parameters

No parameters.

### Return

Returns the first document from the cursor as an object.
If the cursor is empty, returns ((%Vnull%)).

## Cursor State

This function keeps the cursor open.

Try [first](./first) for a variant of this function that automatically closes the cursor.

## Example

For the following example, assume the database contains the following documents, inserted in that order:

```
{ type: "my_data", my_key: "foo", order: 2 }
{ type: "my_data", my_key: "bar", order: 1 }
```

```js
function(context, args) {
let cursor = #db.f({ type: "my_data" });
let a = cursor.skip(1).first_and_keep_open();
let b = cursor.skip(0).first_and_close();
return [ a.my_key, b.my_key ]; // [ "bar", "foo" ]
}
```
Loading