节点和关系操作符

节点和关系操作符允许您操作和查询 NODERELATIONSHIP 属性值。Cypher® 包含以下节点和关系操作符

  • 静态属性访问:点操作符 (.)

  • 动态属性访问:下标操作符 ([])

有关返回 NODERELATIONSHIP 值元数据的函数,请参阅

示例图

以下图用于下面的示例

graph element operators

要重新创建图,请针对空的 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
表 1. 结果
名称

"Alice"

"Cecil"

"Cecilia"

行数: 3

静态访问节点和关系属性
MATCH (employee:Person)-[r:WORKS_FOR]->(manager:Person)
RETURN employee.firstName AS employee,
       r.since AS employedSince,
       manager.firstName AS manager
表 2. 结果
员工 受雇起始日期 经理

"Cecil"

2023

"Alice"

"Cecilia"

2015

"Alice"

行数: 2

动态属性访问

可以使用下标操作符 [] 动态访问属性值。

使用变量动态访问属性
WITH 'lastName' AS nodeProperty
MATCH (p:Person)
RETURN p[nodeProperty] AS lastName
表 3. 结果
姓氏

"Baxter"

"Ericson"

"Farega"

行数: 3

参数
{
  "propertyName": "middleName"
}
使用参数动态访问属性
MATCH (p:Person)
RETURN p[$propertyName] AS middleName
表 4. 结果
中间名

"Catherine"

"David"

null

行数: 3

处理 null

如果表达式中缺少属性(或属性值),并且该表达式尝试静态或动态访问属性,则整个表达式将评估为 null。下面的查询对 Person 节点上的 firstNamemiddleNamelastName 属性执行字符串连接。请注意,对于缺少 middleName 属性的 Cecilia,将返回 null

使用节点属性进行字符串连接
MATCH (p:Person)
RETURN p.firstName || ' ' || p.middleName || ' ' || p.lastName AS fullName
表 5. 结果
全名

"Alice Catherine Baxter"

"Cecil David Ericson"

null

行数: 3

可以使用 coalesce() 函数跳过表达式中的第一个 null 值。在下面的示例中,它将找到的第一个 null 值替换为空 STRING

使用 coalesce() 函数跳过 null
MATCH (p:Person)
RETURN p.firstName || coalesce(' ' + p.middleName, '') || ' ' || p.lastName AS fullName
表 6. 结果
全名

"Alice Catherine Baxter"

"Cecil David Ericson"

"Cecilia Farega"

行数: 3

© . All rights reserved.