Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过Cypher中的某个属性检索特定关系?(neo4j)_Neo4j_Cypher_Graph Databases - Fatal编程技术网

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

如何通过Cypher中的某个属性检索特定关系?(neo4j),neo4j,cypher,graph-databases,Neo4j,Cypher,Graph Databases,我正试图想出两种语言的密码语法: 在关系属性上创建索引 查询该索引,以便从其值之一检索特定关系 既然标签不能用于关系,怎么做呢?不幸的是,您不能在Neo4j中为关系添加索引。所以,不能通过数据库的属性值来查询数据库中的特定关系 还有其他选择 数据模型 您可以通过以下方式重新组织数据: 特定属性位于节点中 创建特定的关系类型 通常,当查询所需的属性位于节点中,并且只有其他属性(即成本)处于关系中时,您可以这样设计 无论如何,您可以按特定属性查询关系: MATCH (start)-[:REL

我正试图想出两种语言的密码语法:

  • 在关系属性上创建索引
  • 查询该索引,以便从其值之一检索特定关系

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

不幸的是,您不能在Neo4j中为关系添加索引。所以,不能通过数据库的属性值来查询数据库中的特定关系

还有其他选择

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

  • 特定属性位于节点中
  • 创建特定的关系类型
通常,当查询所需的属性位于节点中,并且只有其他属性(即
成本
)处于关系中时,您可以这样设计

无论如何,您可以按特定属性查询关系:

MATCH (start)-[:RELATIONSHIP {property: "value"}]->(end)
这将在
:RELATIONSHIP
范围的完整扫描中结束

如果您知道开始/结束节点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中删除


但是有-。您可以检查它提供了什么,以及该功能是否可以在您的应用程序中使用。

我之所以想这样做,只是因为我需要更新关系属性的值。此更新不应在遍历后立即执行,那么在Cypher中执行此更新的最快方法是什么?(我知道涉及的两个节点的ID,但它们之间可能有多个相同类型的关系…)谢谢,这个stament的性能如何?它是否也必须执行完整扫描才能执行查询?否。它将根据2个节点的id查找它们。然后获取它们之间的关系列表(几乎是O(1)操作)。您可以始终
PROFILE
您的查询,以查看发生了什么。