Skip to content

User-defined variables

User-defined variables allow passing the result of one statement to another.

OpenCypher compatibility

In openCypher, when you refer to the vertex, edge, or path of a variable, you need to name it first. For example:

ngql nebula> MATCH (v:player{name:"Tim Duncan"}) RETURN v; +----------------------------------------------------+ | v | +----------------------------------------------------+ | ("player100" :player{name: "Tim Duncan", age: 42}) | +----------------------------------------------------+

The user-defined variable in the preceding query is v.

Native nGQL

User-defined variables are written as $var_name. The var_name consists of letters, numbers, or underline characters. Any other characters are not permitted.

The user-defined variables are valid only at the current execution (namely, in this composite query). When the execution ends, the user-defined variables will be automatically expired. The user-defined variables in one statement CANNOT be used in any other clients, executions, or sessions.

You can use user-defined variables in composite queries. Details about composite queries, see Composite queries.

Note

User-defined variables are case-sensitive.

Example

ngql nebula> $var = GO FROM "player100" OVER follow YIELD dst(edge) AS id; \ GO FROM $var.id OVER serve YIELD properties($$).name AS Team, \ properties($^).name AS Player; +-----------+-----------------+ | Team | Player | +-----------+-----------------+ | "Spurs" | "Tony Parker" | | "Hornets" | "Tony Parker" | | "Spurs" | "Manu Ginobili" | +-----------+-----------------+


Last update: October 27, 2021