【发布时间】:2015-06-27 15:35:40
【问题描述】:
我在寻找什么
使用可变长度关系(请参阅here in the neo4j manual),可以在两个节点之间建立具有特定标签的可变数量的关系。
# Cypher
match (g1:Group)-[:sub_group*]->(g2:Group) return g1, g2
我正在寻找与节点相同的东西,即一种查询两个节点之间的节点数量可变的方法,但使用 >在节点而不是关系上标记条件:
# Looking for something like this in Cypher:
match (g1:Group)-->(:Group*)-->(g2:Group) return g1, g2
示例
我会使用这种机制,例如,在组结构中查找组的所有(直接或间接)成员。
# Looking for somthing like this in Cypher:
match (group:Group)-->(:Group*)-->(member:User) return member
以这个结构为例:
group1:Group
|-------> group2:Group -------> user1:User
|-------> group3:Group
|--------> page1:Page -----> group4:Group -----> user2:User
在此示例中,user1 是 group1 和 group2 的成员,但 user2 只是 group4 的成员,而不是其他组的成员,因为非Group 标记的节点介于两者之间。
抽象
更抽象的模式是 Cypher 中的一种重复运算符 |...|*:
# Looking for repeat operator in Cypher:
match (g1:Group)|-[:is_subgroup_of]->(:Group)|*-[:is_member_of]->(member:User)
return member
有人知道这样的重复运算符吗?谢谢!
【问题讨论】: