Neo4j匹配路径排除具有特定标签的节点

jas*_*ing 5 neo4j

我有问题在neo4j中检索路径排除某些标签.

敌人的例子,我有

               -->(h)-->(j)
              /
(a)-->(b)-->(c)-->(d)-->(i)
        \           
         -->(f)-->(g)
Run Code Online (Sandbox Code Playgroud)

with hnode有一个Deleted标签.

我有疑问

MATCH path = (n)-[*]->(child) where id(n)={id of node a} and NOT child:Deleted RETURN path
Run Code Online (Sandbox Code Playgroud)

那么我想这个查询返回的完整路径,但不包括节点的子树h,因为节点hDeleted.

返回树应该是这样的

(a)-->(b)-->(c)-->(d)-->(i)
        \           
         -->(f)-->(g)
Run Code Online (Sandbox Code Playgroud)

但查询似乎无效.

谁能帮我这个.

谢谢

wee*_*ens 7

对我有用的是对路径中节点的列表理解:

MATCH path = ()-[*]->()
WHERE NONE(n IN nodes(path) WHERE n:Deleted)
RETURN path
Run Code Online (Sandbox Code Playgroud)


Tim*_*ehn -2

您需要检查两个节点的标签:

match p=((a)-[r:NEXT]->(b))
where  not (a:Deleted or b:Deleted)
return p
Run Code Online (Sandbox Code Playgroud)

这是另一个例子:

match (a)-[r:NEXT]->(b) 
where  not (("Deleted" in labels(a)) or
            ("Deleted" in labels(b))) 
return a, r, b
Run Code Online (Sandbox Code Playgroud)