我正在运行一个查询,以查找从用户到neo4j中权限节点的路径,我想确保它不会遍历某些关系。因此,我使用了以下密码:
PROFILE
MATCH path = (u:user { _id: 'ea6b17e0-3b9e-11ea-b206-e7610aa23593' })-[r:accessRole|isMemberOf*1..5]->(n:PermissionSet { name: 'project'})
WHERE all(x IN r WHERE NOT (:PermissionSet)-[x]->(:user))
RETURN path
我没想到where子句会引发这么多点击。我认为我的考试写得不对。(对于"(:PermissionSet(-[x]->(:用户(";
有什么建议吗?
不确定这是正确的答案,但我添加了一个WITH语句
PROFILE
MATCH path = (u:user { _id: 'ea6b17e0-3b9e-11ea-b206-e7610aa23593' })-[r:accessRole|isMemberOf*1..5]->(n:PermissionSet { name: 'project'})
WITH path,r
WHERE all(x IN r WHERE NOT (:PermissionSet)-[x]->(:user))
RETURN path
以及";(:PermissionSet(-[x]->(:用户(";被击出2800支安打。
我能猜出为什么会这样,但我希望有更多专家的解释,有更好的方法吗?(这种方式对我的性能很好(