初学者的问题。我如何在Cypher中获得不同类型的边缘?在Cypher中获得不同类型的边缘?
我知道如何让所有的边缘在数据库:
MATCH (a)-[r*1..1]->(b)
RETURN extract(x IN r | {rel: x})
而且我可以看到,每一个都有一个TYPE
属性。但是,我如何优化这个以获得不同的TYPE?
初学者的问题。我如何在Cypher中获得不同类型的边缘?在Cypher中获得不同类型的边缘?
我知道如何让所有的边缘在数据库:
MATCH (a)-[r*1..1]->(b)
RETURN extract(x IN r | {rel: x})
而且我可以看到,每一个都有一个TYPE
属性。但是,我如何优化这个以获得不同的TYPE?
对于您可以用放松和DISTINCT任何长度的路径:
MATCH p = (a)-[r*1..5]->(b)
UNWIND relationships(p) as rel
RETURN distinct type(rel) as type
@ stob--也许添加使用任何可变长度的深度将返回了'r'别名关系的集合,让他明白你为什么有放松;-) –
感谢 - 这恐怕也不会返回任何结果,但...是有什么我可以做的调试? – Richard
@ChristopheWillemsen是的,你是对的:) –
的builtin proceduredb.relationshipTypes
将返回所有关系类型的集合速度非常快,从缓存数据。例如:
CALL db.relationshipTypes() YIELD relationshipType
RETURN relationshipType;
此前版本3.0.0-M05,这个过程被命名为sys.db.relationshipTypes
。
谢谢!恐怕第一个没有返回任何结果,后者给了我'服务器错误(invalid_parameter):Cypher查询缺少“return”语句。 – Richard
感谢您的更新。如果我做'匹配(a) - [r] - >(b)RETURN r',那么我得到数以千计的结果,所以数据库中肯定存在关系。但是,如果我做'返回r.type'或者'返回r.TYPE',我什么都没有,所以也许这就是问题所在?我正在使用Linkurious,它在结果中显示TYPE属性。 – Richard
你必须'返回类型(R)''不返回r.type' –