Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/expressions/label/ Documentation version: v5.3.2 # 标签表达式 标签表达式可以引用图元素的标签。 标签表达式通常用在标签谓词中或者图模式中,根据标签过滤图元素。更多信息,请参见[标签谓词](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/fe/predicates/labeled/)和[图模式](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/patterns/)。 ## 语法 语法图源码 label_expression label_factor ```` label_expression ::= (label_factor ( '&' label_factor )* ) ( '|' (label_factor ( '&' label_factor )*) )* label_factor ::= label_name | '%' | '(' label_expression ')' | '!' label_name | '!' '%' | '!' '(' label_expression ')' ```` ## 参数 ### `label_name` 标签名称。 ### `%` 匹配任意标签的通配符。 ### `!` 逻辑非运算符,表示排除一个标签。 ### `&` 逻辑与运算符,表示两个标签因子(label_factor)的交集。 ### `|` 逻辑或运算符,表示两个标签因子(label_factor)的并集。 ## 示例 以下示例基于[示例数据集](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/example-dataset/)。 ### 引用一个标签 ```` ''' USE movie MATCH (v)-[e]->() WHERE v IS LABELED Person RETURN DISTINCT v.name AS name LIMIT 5 ''' ```` 上述语句选择了标签为`Person`的点,并返回点的名称。 返回: ```` +---------------+ | name | +---------------+ | null | | Jürgen Tonkel | | Frank Harper | | James Doohan | | Fana Mokoena | +---------------+ ```` ### 引用任意标签 ```` ''' USE movie MATCH (v:%)-[e]->() RETURN DISTINCT v.name AS name LIMIT 5 ''' ```` 上述语句选择了带有任意标签的点,并返回点的名称。 返回: ```` +------------------------+ | name | +------------------------+ | Marco Kreuzpaintner | | Curt Siodmak | | David Lynch | | Billy Wilder | | Star Trek: Generations | +------------------------+ ```` ### 排除一个标签 ```` ''' USE movie MATCH (v)-[e:!Act]->() RETURN DISTINCT e LIMIT 2 ''' ```` 上述语句选择了不带有标签`Act`的边,并返回边的信息。 返回: ```` +----------------------------------------------------------------------+ | e | +----------------------------------------------------------------------+ | (289047300406247427)-[0@Watch:Watch{rate:4.0}]->(289108623949299713) | | (289047300406247427)-[0@Watch:Watch{rate:1.0}]->(289138379482726401) | +----------------------------------------------------------------------+ ```` ### 使用运算符`&`引用标签 ```` ''' USE movie MATCH (v WHERE v IS LABELED Person&Movie)-[e]->() RETURN DISTINCT v.name AS name LIMIT 5 ''' ```` 上述语句选择了同时带有标签`Person`和`Movie`的点,并返回点的名称。 返回: ```` +------+ | name | +------+ +------+ ```` ### 使用运算符`|`引用标签 ```` ''' USE movie MATCH (v)-[e]->() WHERE v IS LABELED Person|Movie RETURN DISTINCT v.name AS name LIMIT 5 ''' ```` 上述语句选择了带有标签`Person`或`Movie`的点,并返回点的名称。 返回: ```` +-------------------------------------+ | name | +-------------------------------------+ | Green Mile | | Willy Wonka & the Chocolate Factory | | Zatoichi | | The Blue Angel | | Sissi – The Young Empress | +-------------------------------------+ ````