我刚刚开始与Neo4j,我在folling的情况下挣扎了一下。鉴于以下图表:Neo4j密码子返回儿童的所有节点
为“西奥”,我要回谁也可以管理词汇表的其他用户名的列表。作为父母组的成员,应该为您提供与您的孩子相同的权限。
例如,对于“theo”,我们应该返回sara和bob,因为sara是PoleManager的成员,它是ProjectManager组的父项。 Bob是有权管理词汇表的ProjectManager组的成员。
到目前为止,我有以下查询,但它不返回萨拉作为候选:
MATCH (me:User{name:"theo"})-[:MEMBER_OF]->(g:Group), (g)-[:CAN_MANAGE]->(Asset{name:"Glossaries"}), (users:User)-[:MEMBER_OF]->(g) RETURN me.name AS Me, collect(users.name) AS Users UNION MATCH (me:User{name:"theo"})-[:MEMBER_OF]->(Group)<-[:CHILD_OF*]-(children:Group), (children)-[:CAN_MANAGE]->(Asset{name:"Glossaries"}), (users:User)-[:MEMBER_OF]->(children) RETURN me.name AS Me, collect(users.name) AS Users
我也愿意接受更好的想法把这个图表示。
我错了'[:CHILD_OF *]'虽然'*'会匹配'0',但它似乎不是:( –
其实,@ InverseFalcon第一个查询,这是有用的知道“有什么用户Theo可以管理词汇表“不起作用,它只会返回我'[bob]'。任何想法为什么? –
是的,我的查询中存在一个缺陷,我只是修复它,看看它是否适用于您。 – InverseFalcon