Neo4j 在Cypher中获得不同类型的边缘?

Neo4j 在Cypher中获得不同类型的边缘?,neo4j,cypher,Neo4j,Cypher,初学者问题。如何在Cypher中获得不同类型的edge 我知道如何获取数据库中的所有边: MATCH (a)-[r*1..1]->(b) RETURN extract(x IN r | {rel: x}) 我可以看到每一个都有一个类型属性。但是我如何改进它以获得不同的类型呢?我认为这就是您要寻找的 MATCH (a)-[r]->(b) RETURN distinct(type(r)) 您也可以使用 call db.relationshipTypes 编辑:如果第一个没有返回任何

初学者问题。如何在Cypher中获得不同类型的edge

我知道如何获取数据库中的所有边:

MATCH (a)-[r*1..1]->(b)
RETURN extract(x IN r | {rel: x})

我可以看到每一个都有一个
类型
属性。但是我如何改进它以获得不同的类型呢?

我认为这就是您要寻找的

MATCH (a)-[r]->(b)
RETURN distinct(type(r))
您也可以使用

call db.relationshipTypes
编辑:如果第一个没有返回任何表示您在db中没有关系的内容,那么第二个可能只适用于上的neo4j 3.1版本


我想这就是你要找的

MATCH (a)-[r]->(b)
RETURN distinct(type(r))
您也可以使用

call db.relationshipTypes
编辑:如果第一个没有返回任何表示您在db中没有关系的内容,那么第二个可能只适用于上的neo4j 3.1版本


对于任何长度的路径,您都可以使用“展开”和“区分”:

   MATCH p = (a)-[r*1..5]->(b)
   UNWIND relationships(p) as rel
   RETURN distinct type(rel) as type

对于任何长度的路径,都可以使用“展开”和“区分”:

   MATCH p = (a)-[r*1..5]->(b)
   UNWIND relationships(p) as rel
   RETURN distinct type(rel) as type
db.relationshipTypes
将非常快地从缓存数据返回所有关系类型的集合。例如:

CALL db.relationshipTypes() YIELD relationshipType
RETURN relationshipType;
在版本3.0.0-M05之前,此过程被命名为
sys.db.relationshipTypes

db.relationshipTypes
将从缓存的数据快速返回所有关系类型的集合。例如:

CALL db.relationshipTypes() YIELD relationshipType
RETURN relationshipType;

在版本3.0.0-M05之前,此过程的名称为
sys.db.relationshipTypes

@stob--可能需要补充的是,使用任何可变长度作为深度都会返回
r
别名的关系集合,以便他理解您为什么必须展开;-)谢谢-我恐怕这没有返回任何结果,虽然。。。我可以做些什么来调试吗?@Richard您想在数据库中获取所有关系类型吗?@stob--可能需要补充一点,即使用任何长度变量作为深度将返回
r
别名的关系集合,以便他理解您为什么必须展开;-)谢谢-我恐怕这没有返回任何结果,虽然。。。我可以做些什么来调试吗?@Richard您想在数据库中获取所有关系类型吗?谢谢!恐怕第一个没有返回任何结果,而后者给了我
服务器错误(无效的\u参数):Cypher查询缺少“return”语句。
。感谢更新。如果我
匹配(a)-[r]->(b)返回r
,那么我会得到数千个结果,因此数据库中肯定存在关系。但是,如果我执行
返回r.type
返回r.type
操作,我将一无所获,那么这可能就是问题所在?我使用的是Linkurious,它在结果中显示类型属性。您必须
返回类型(r)
而不是
返回r.TYPE
谢谢!恐怕第一个没有返回任何结果,而后者给了我
服务器错误(无效的\u参数):Cypher查询缺少“return”语句。
。感谢更新。如果我
匹配(a)-[r]->(b)返回r
,那么我会得到数千个结果,因此数据库中肯定存在关系。但是,如果我执行
返回r.type
返回r.type
操作,我将一无所获,那么这可能就是问题所在?我使用的是Linkurious,它在结果中显示类型属性。您必须
返回类型(r)
而不是
返回r.TYPE