我使用密码查询使用密码查询查找两个节点之间的路径
Match p = (n{ConceptID: 'C0000039'})-[r]-()-[s]- (m)
WHERE r.RelationLabel CONTAINS "may_be_treat" or s.RelationLabel CONTAINS "may_be_treat"
RETURN p
但是这个查询可以返回最大深度为2的路径,如何在此查询中将路径作为变量(2,3,4,5,6),条件为r.RelationLabel CONTAINS" may_be_treat&# 34;
答案 0 :(得分:3)
您可以使用variable-length pattern matching。
如果您需要n
和n1
之间的所有关系都有一个名为RelationLabel
的属性,CONTAINS
值为" may_be_treat",那么您可以结合使用ALL功能。
Match p = (n{ConceptID: 'C0000039'})-[*]-(m)
WHERE ALL (r IN relationships(p) WHERE r.RelationLabel CONTAINS "may_be_treat")
RETURN p
如果只有一个与RelationLabel
的关系,那就是" may_be_treat"已经足够了,那么你可以改用ANY函数。
Match p = (n{ConceptID: 'C0000039'})-[*]-(m)
WHERE ANY (r IN relationships(p) WHERE r.RelationLabel CONTAINS "may_be_treat")
RETURN p
答案 1 :(得分:1)
@Bruno Peres' answer is right.
如果你想要控制路径的长度,你可以添加一个显式的可变长度模式匹配
Match p = (n{ConceptID: 'C0000039'})-[*1..5]-(m)
WHERE ANY (r IN relationships(p) WHERE r.RelationLabel CONTAINS "may_be_treat")
RETURN p
或使用length
路径功能。
Match p = (n{ConceptID: 'C0000039'})-[*]-(m)
WHERE length(p) < 5 AND ANY (r IN relationships(p) WHERE r.RelationLabel CONTAINS "may_be_treat")
RETURN p