节点和关系操作符
节点和关系操作符允许您操作和查询 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 |