Skip to main content
Version: 3.0 (next)

Neo4j Nodes

Read and write a Neo4j graph from a pipeline with Cypher, each run in its own read or write transaction.

Operations
Read Query · Write Query
Record cap
Up to 100,000 records, sent as the fetch size
Transactions
Read transaction · write transaction that commits
Store and forward
Writes are never buffered

Neo4j is a graph database: machines, lines, materials and orders as nodes, and the relationships between them. MaestroHub provides two nodes for it: a Cypher read and a Cypher write, against the server the connection profile names.

Records cross the boundary as plain JSON objects keyed by column name, and a downstream node reads result.records[0].name directly.

For the connection, the function types and their fields, see the Neo4j connection guide.

Configuration Quick Reference​

FieldWhat you chooseDetails
ParametersConnection, Function, Function Parameters, Timeout OverrideSelect the connection profile (which fixes the server), the function, values for any ((parameter)) the function uses, and optionally a timeout override.
SettingsDescription, Timeout (seconds), Retry on Timeout, Retry on Fail, On ErrorNode description, maximum execution time, retry behavior on timeout or failure, and error handling strategy. All execution settings default to pipeline-level values.
Neo4j Read Query node configurationNeo4j Read Query node configuration

Neo4j Read Query Node

Neo4j Read Query Node​

Run a Cypher read in a read transaction and return its records.

The server refuses a query that writes, so a read node can never change the graph. Max Records is sent as the fetch size: a larger result is cut off at the server and result.truncated is true. A query that matches nothing is not an error: the node succeeds with an empty result.records.

Supported Function Types:

Function NamePurposeCommon Use Cases
Read QueryRead what a Cypher query returnsLooking up a machine's line and site, tracing what a machine feeds, listing open orders on a line

Neo4j Write Query node configurationNeo4j Write Query node configuration

Neo4j Write Query Node

Neo4j Write Query Node​

Run a Cypher write in a write transaction that commits when it succeeds.

result.counters reports what changed. A write is never buffered and replayed by store-and-forward; when Retry on Fail repeats a write whose outcome was unknown, the query runs again, so use MERGE for writes that may repeat.

Supported Function Types:

Function NamePurposeCommon Use Cases
Write QueryCreate, update or delete nodes and relationshipsKeeping machine state current, linking a lot to the machine that made it, recording events in the graph

Output​

Each record is a JSON object keyed by the query's column names. A node is {"elementId", "labels", "properties"}, a relationship adds its type, startElementId and endElementId, a path is {"nodes", "relationships"} in order, dates and times are ISO 8601 text (a DateTime in UTC), and a point is {"srid", "x", "y"}. The connection guide's values table lists every type.

{
"keys": ["name", "m"],
"records": [
{
"name": "press-7",
"m": {
"elementId": "4:7f8c2a1e-5b3d-4c9a-8e21-0d6f3b9a1c42:12",
"labels": ["Machine"],
"properties": {"name": "press-7", "line": 3, "commissioned": "2019-05-01"}
}
}
],
"recordCount": 1,
"truncated": false
}

Read Query​

KeyDescription
result.recordsThe records, as JSON objects keyed by column name
result.keysThe column names in the order the query returned them
result.recordCountHow many records came back
result.truncatedtrue when the query produced more records than Max Records and the rest were not read

Write Query​

KeyDescription
result.recordsThe records the query's RETURN produced; empty for a write with no RETURN
result.keysThe column names in the order the query returned them
result.recordCountHow many records came back
result.truncatedtrue when the RETURN produced more records than Max Records; the write itself still ran to the end and committed
result.countersWhat the committed write changed: nodesCreated, nodesDeleted, relationshipsCreated, relationshipsDeleted, propertiesSet, labelsAdded, labelsRemoved, indexesAdded, indexesRemoved, constraintsAdded, constraintsRemoved, systemUpdates, and containsUpdates (false when nothing changed)