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

时间:2017-02-24 12:50:37

标签: neo4j cypher

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

我知道如何获得数据库中的所有优势:

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

我可以看到每个人都有TYPE属性。但是如何对其进行优化以获得不同的TYPE?

3 个答案:

答案 0 :(得分:1)

我认为这就是你要找的东西

MATCH (a)-[r]->(b)
RETURN distinct(type(r))

您也可以使用

call db.relationshipTypes

编辑:如果第一个没有返回任何意味着你在db中没有关系的东西,第二个可能只能从neo4j 3.1版本开始

enter image description here

答案 1 :(得分:1)

对于任何长度路径,您可以使用UNWIND和DISTINCT:

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

答案 2 :(得分:1)

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

CALL db.relationshipTypes() YIELD relationshipType
RETURN relationshipType;

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