节点与关系运算符
节点和关系运算符允许您操作并查询 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
| 名称 (name) |
|---|
|
|
|
行:3 |
静态访问节点和关系属性
MATCH (employee:Person)-[r:WORKS_FOR]->(manager:Person)
RETURN employee.firstName AS employee,
r.since AS employedSince,
manager.firstName AS manager
| employee | employedSince | manager |
|---|---|---|
|
|
|
|
|
|
行:2 |
||
动态属性访问
属性值可以通过使用下标运算符 [] 动态访问。
使用变量动态访问属性
LET nodeProperty = 'lastName'
MATCH (p:Person)
RETURN p[nodeProperty] AS lastName
| lastName |
|---|
|
|
|
行:3 |
参数
{
"propertyName": "middleName"
}
使用参数动态访问属性
MATCH (p:Person)
RETURN p[$propertyName] AS middleName
| middleName |
|---|
|
|
|
行:3 |
处理 null 值
如果在表达式中尝试静态或动态访问属性时,某个属性(或属性值)缺失,则整个表达式的结果将为 null。下面的查询对 Person 节点的 firstName、middleName 和 lastName 属性执行 字符串连接。请注意,对于缺少 middleName 属性的 Cecilia,返回的是 null。
使用节点属性进行字符串连接
MATCH (p:Person)
RETURN p.firstName || ' ' || p.middleName || ' ' || p.lastName AS fullName
| fullName |
|---|
|
|
|
行:3 |
coalesce() 函数可用于跳过表达式中的第一个 null 值。在下面的示例中,它将找到的第一个 null 值替换为空的 STRING。
使用
coalesce() 函数跳过 null 值MATCH (p:Person)
RETURN p.firstName || coalesce(' ' + p.middleName, '') || ' ' || p.lastName AS fullName
| fullName |
|---|
|
|
|
行:3 |