Explode Array (PLAN §11.20): one row per element of an array in a Variant (JSON) column, at a path of keys (none when the column is the array). The input's columns are kept, and the element is a new Variant column, empty for a row whose array is empty or missing, which is kept once: the engine's lateral with flatten keeps it on every database that runs it.

Hierarchy (View Summary)

Constructors

  • By default, nothing picked yet

    Parameters

    • id: string
    • column: string = ''
    • path: readonly string[] = []
    • name: string = ''
    • Optionalrest: JsonObject

    Returns Explode

Properties

column: string

The Variant column holding the documents, '' until picked

id: string

Unique within the query and shown to users, e.g. filter101

key: number

Assigned at construction from a monotonic sequence: the node's identity for change detection

name: string

The new column's name, '' until given

path: readonly string[]

The keys from the column to the array, empty when the column is the array

rest: JsonObject

The keys of the node's saved JSON that this version does not know, kept so a re-save writes them back (PLAN §10.3); edits keep them too

Accessors

  • get acceptsNewInputs(): boolean

    Whether edits may change which nodes feed this one. Not for a node whose port semantics are unknown, such as an Unknown node.

    Returns boolean

  • get consumesInputOrder(): boolean

    Whether the node takes rows by their order, as a Limit does: the emitter then writes its input's order as a sort just before it (PLAN §11.4)

    Returns boolean

  • get portLabels(): readonly string[]

    Labels for the input ports, shown on the edges that feed them

    Returns readonly string[]

  • get ports(): readonly string[]

    The named input slots, in order: none for a source, one for a unary transform, two for a binary one

    Returns readonly string[]

Methods

  • Whether the node has none of the settings it needs yet, e.g. a Join with no key pair: the canvas shows it as not set, not by its description

    Returns boolean

  • The order the node's rows come in, from its inputs' orders in port order (undefined where unknown), for computeRowOrders (PLAN §11.4). By default no order, as from a source or a join: a node that keeps its input's order says so, so a new node never claims an order on columns it may not have.

    Parameters

    • inputOrders: readonly (undefined | RowOrder)[]

    Returns undefined | RowOrder

  • In order: a column, in the input, a Variant; no empty key in the path; then a new column's name, valid and no input column's, compared as databases that ignore case compare them. Each part stops at its first problem, every part reported.

    Parameters

    • inputSchemas: readonly Schema[]
    • Optionalerrors: string[]

    Returns boolean

  • A new explode with the same id and rest, and these settings

    Parameters

    • settings: { column?: string; name?: string; path?: readonly string[] }

    Returns Explode

  • The node to keep once its two inputs swap ports: by default this node. A node whose settings name its inputs by side, such as a Join's key columns, returns a new node (same id) with those settings swapped too.

    Returns QueryNode