1

我有组节点结构,其中一个节点从前一个节点继承权限

Manager ---Implies---> PowerUser ---Implies---> User

但是结构不干净,有时我有两个优势,从经理poweruser,再到user,这已经被poweruser暗示了

Manager ---Implies---> PowerUser ---Implies---> User
        ---Implies----------------------------> User

我如何查询节点以检测我已经有一个隐式关系并且我不需要额外的显式关系

4

1 回答 1

1

它看起来像是PowerUser你结构中的一个标签。只要此标签出现在某处,您就可以编写一个可变长度遍历 [1] 来考虑任何长度的路径:

MATCH (entity)-[*0..]->(:PowerUser)

将是完成此任务的最广泛遍历,匹配PowerUser通过 0 个或更多边连接到标签的任何节点。

然而,鉴于这PowerUser是一种许可,似乎更合适的设计是将其视为财产。由于 Cypher 是无模式的,因此属性不限于特定标签,因此可以在具有ManagerorUser标签的节点上设置和过滤。这种方法将允许更简洁的表达方式,例如:

MATCH (entity {PowerUser: true})-[]->()

如果这与您的用例不匹配,请随时提供有关您的图形结构的更多详细信息!

  1. https://oss.redislabs.com/redisgraph/commands/#variable-length-relationships
于 2019-05-20T10:24:00.623 回答