如何通过 Cypher 中的一个属性检索特定关系? (neo4j)

How to retrieve a specific relationship by one of its properties in Cypher? (neo4j)

我正在尝试为两者提出 Cypher 语法:

既然标签不能用于关系,那怎么办呢?

遗憾的是,您无法在 Neo4j 中为关系添加索引。所以,你不能通过它的 属性 值查询数据库的特定关系。

还有其他选择。

数据模型

您可以通过以下方式重新组织数据:

  • 具体属性在节点中
  • 创建特定的关系类型

通常,当查询所需的属性在节点中并且只有其他属性(即 cost)在关系中时,您可以设计这种方式。

无论如何你可以通过特定的关系查询 属性:

MATCH (start)-[:RELATIONSHIP {property: "value"}]->(end)

这将以 :RELATIONSHIP 范围的全扫描结束。

如果您知道 start/end 节点 ID

如果您知道开始节点和结束节点的 ID,并且想要更新 属性 特定关系,那么这个应该有效:

MATCH (start)-[r:RELTYPE {property: "value"}]->(end)
WHERE id(start) = 1 AND id(end) = 2
WITH r
SET r.property = "new_value"
RETURN r

旧索引

警告:此功能已弃用。我相信它将在 Neo4j 3.0.0 中被删除。

但是有 - Relationship indexes。您可以查看它提供的内容以及此功能是否可以在您的应用中使用。