Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/predicates/exists/ Documentation version: v5.3.2 # EXISTS 谓词 `EXISTS`谓词检查某个图模式是否存在或某个查询的结果是否非空。 ## 语法 语法图源码 exists_predicate ```` exists_predicate ::= EXISTS ( '{' graph_pattern '}' | '(' graph_pattern ')' | '{' match_statement+ '}' | '{' procedure_body '}' ) ```` ## 参数 ### `graph_pattern` 待检查的图模式。更多信息,请参见[图模式](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/patterns/)。 ### `match_statement` 指定待检查的查询的 MATCH 语句。更多信息,请参见 [MATCH](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/match/)。 ### `procedure_body` 待检查的过程的处理逻辑,可以由[原始值变量定义](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/variable-definition/value-variable/)和以下类型的语句组成: - [数据定义语句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/dql/) - [控制流语句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/control-flow/) - [变量操作语句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/set/) - [日志语句](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/log/) ## 示例 以下示例基于[示例数据集](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/example-dataset/)。 ### 检查点模式是否存在 ```` ''' USE movie RETURN EXISTS { (v WHERE v.id= 123 ) } AS a ''' ```` 返回: ```` +------+ | a | +------+ | true | +------+ ```` ### 检查边模式是否存在 ```` ''' USE movie RETURN EXISTS ( ()-[e]->() WHERE e.id= 13423 ) AS b ''' ```` 返回: ```` Error: [NS230]: property `id` not found in EDGE... ```` ### 检查查询的结果是否非空 ```` ''' USE movie RETURN EXISTS { MATCH (a@`User`)-[e:Watch]->(b) WHERE a.id = 123 RETURN e } AS c ''' ```` 返回: ```` +------+ | c | +------+ | true | +------+ ```` ### 检查过程的结果是否非空 ```` ''' USE movie MATCH (a@Actor) WHERE a.id IN [1, 2, 3, 4, 5] LET d = EXISTS { VALUE born_before_1950::BOOL IF a.birthDate < DATE "1950-01-01" THEN { SET born_before_1950 = true LOG_INFO(a.name, " was born before 1950: ", born_before_1950) FILTER born_before_1950 RETURN born_before_1950 } ELSE { SET born_before_1950 = false LOG_INFO(a.name, " was born before 1950: ", born_before_1950) FILTER born_before_1950 RETURN born_before_1950 } } RETURN a.name AS actor_name, d AS born_before_1950 ''' ```` 上述实例检查 ID 在 1 到 5 之间的每个演员是否在 1950 年前出生,并记录结果。如果该过程返回非空结果,则`EXISTS`谓词返回`true`。 返回: ```` +---------------+------------------+ | actor_name | born_before_1950 | +---------------+------------------+ | Mark Hamill | false | | Carrie Fisher | false | | Peter Cushing | true | | Harrison Ford | true | +---------------+------------------+ Log: 2026-01-20T07:44:00.840764 INFO - Carrie Fisher was born before 1950: false 2026-01-20T07:44:00.840794 INFO - Mark Hamill was born before 1950: false 2026-01-20T07:44:00.840804 INFO - Peter Cushing was born before 1950: true 2026-01-20T07:44:00.841090 INFO - Harrison Ford was born before 1950: true ````