跳转至

OPTIONAL MATCH

OPTIONAL MATCH通常与MATCH语句一起使用,作为MATCH语句的可选项去匹配命中的模式,如果没有命中对应的模式,对应的列返回NULL

openCypher 兼容性

本文操作仅适用于 nGQL 中的 openCypher 方式。

示例

MATCH语句中使用OPTIONAL MATCH的示例如下:

ngql nebula> MATCH (m)-[]->(n) WHERE id(m)=="player100" \ OPTIONAL MATCH (n)-[]->(l) WHERE id(n)=="player125" \ RETURN id(m),id(n),id(l); +-------------+-------------+-------------+ | id(m) | id(n) | id(l) | +-------------+-------------+-------------+ | "player100" | "team204" | __NULL__ | | "player100" | "player101" | __NULL__ | | "player100" | "player125" | "team204" | | "player100" | "player125" | "player100" | +-------------+-------------+-------------+

而使用多MATCH,不使用OPTIONAL MATCH时,会返回模式完全匹配的行。示例如下:

ngql nebula> MATCH (m)-[]->(n) WHERE id(m)=="player100" \ MATCH (n)-[]->(l) WHERE id(n)=="player125" \ RETURN id(m),id(n),id(l); +-------------+-------------+-------------+ | id(m) | id(n) | id(l) | +-------------+-------------+-------------+ | "player100" | "player125" | "team204" | | "player100" | "player125" | "player100" | +-------------+-------------+-------------+


最后更新: 2026年8月17日