所以我有这个图形结构,其中许多“顶层”和子空间可以像这样存在:
我有下一个密码查询:
MATCH (user:User {auth_token: $auth_token})
MATCH (space:Space)
WHERE (
(NOT (space)<-[:PARENT_OF]-(:Space) AND (user)-[:MEMBER_OF]->(space) AND space.pod_state IN ['active', 'pending'] AND space.pod_type IN ['standard', 'readonly'])
OR
(EXISTS {MATCH (parent:Space)-[:PARENT_OF*]->(space)<-[:MEMBER_OF]-(user) WHERE NOT (user)-[:MEMBER_OF]->(parent) AND space.pod_state IN ['active', 'pending'] AND space.pod_type IN ['standard', 'readonly']})
)
RETURN space
在这种情况下,我需要的是用户可以看到的空格列表(蓝色)(黄色)所以:
- Simon DDD 应该只看到“TOP LEVEL SPACE”,即使他也是“LEVEL 2 SPACE”的成员,他也应该看到每个层次结构中具有最高级别的空间。
- 另一方面,Simon LALALA 应该看到“LEVEL 2 SPACE”,因为他只是该空间的成员。
在提供的查询中,SIMON DDD 同时获取“TOP LEVEL SPACE”和“LEVEL 2 SPACE”SIMON LALALA 没问题,因为他只是路径中一个空间的成员
此外,例如,如果 SIMON DDD 是“LEVEL 1 SPACE A”的成员,则查询可以正常工作,因为查询中的“NOT”子句将起作用,这意味着如果用户是路径中每个空格的成员只显示顶层空间