节点和关系操作符
节点和关系操作符允许您操作和查询 NODE 和 RELATIONSHIP 属性值。Cypher® 包含以下节点和关系操作符
-
静态属性访问:点操作符 (
.) -
动态属性访问:下标操作符 (
[])
有关返回 NODE 和 RELATIONSHIP 值元数据的函数,请参阅
示例图
以下图用于下面的示例
要重新创建图,请针对空的 Neo4j 数据库运行以下查询
CREATE (alice:Person {firstName:'Alice', middleName: 'Catherine', lastName: 'Baxter'}),
(cecil:Person {firstName: 'Cecil', middleName: 'David', lastName: 'Ericson'}),
(cecilia:Person {firstName: 'Cecilia', lastName: 'Farega'}),
(cecil)-[:WORKS_FOR {since: 2023}]->(alice),
(cecilia)-[:WORKS_FOR {since: 2015}]->(alice)
静态属性访问
可以通过在 . 操作符后指定属性名来静态访问属性值。
静态访问节点属性
MATCH (p:Person)
RETURN p.firstName AS name
| 名称 |
|---|
|
|
|
行数: 3 |
静态访问节点和关系属性
MATCH (employee:Person)-[r:WORKS_FOR]->(manager:Person)
RETURN employee.firstName AS employee,
r.since AS employedSince,
manager.firstName AS manager
| 员工 | 受雇起始日期 | 经理 |
|---|---|---|
|
|
|
|
|
|
行数: 2 |
||
动态属性访问
可以使用下标操作符 [] 动态访问属性值。
使用变量动态访问属性
WITH 'lastName' AS nodeProperty
MATCH (p:Person)
RETURN p[nodeProperty] AS lastName
| 姓氏 |
|---|
|
|
|
行数: 3 |
参数
{
"propertyName": "middleName"
}
使用参数动态访问属性
MATCH (p:Person)
RETURN p[$propertyName] AS middleName
| 中间名 |
|---|
|
|
|
行数: 3 |
处理 null 值
如果表达式中缺少属性(或属性值),并且该表达式尝试静态或动态访问属性,则整个表达式将评估为 null。下面的查询对 Person 节点上的 firstName、middleName 和 lastName 属性执行字符串连接。请注意,对于缺少 middleName 属性的 Cecilia,将返回 null。
使用节点属性进行字符串连接
MATCH (p:Person)
RETURN p.firstName || ' ' || p.middleName || ' ' || p.lastName AS fullName
| 全名 |
|---|
|
|
|
行数: 3 |
可以使用 coalesce() 函数跳过表达式中的第一个 null 值。在下面的示例中,它将找到的第一个 null 值替换为空 STRING。
使用
coalesce() 函数跳过 null 值MATCH (p:Person)
RETURN p.firstName || coalesce(' ' + p.middleName, '') || ' ' || p.lastName AS fullName
| 全名 |
|---|
|
|
|
行数: 3 |