首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回子节点的Neo4j密码

返回子节点的Neo4j密码
EN

Stack Overflow用户
提问于 2017-09-14 09:00:00
回答 1查看 440关注 0票数 1

我刚从Neo4j开始,我在对折的案子上有点挣扎。给出了以下图表:

作为"theo",我想返回还可以管理术语表的其他用户名列表。作为父组的成员,您应该可以访问与您的子组相同的权限。

例如,对于"theo",我们应该返回sara和bob,因为sara是PoleManager的成员,而后者是ProjectManager组的父级。Bob是拥有管理术语表的权限的ProjectManager组的成员。

到目前为止,我有以下查询,但它没有将sara作为候选人返回:

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

我也有更好的想法来表示这个图。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-14 09:59:18

查询的后半部分几乎是正确的:

代码语言:javascript
复制
MATCH p = (me:User{name:$Me})-[:MEMBER_OF]->()<-[:CHILD_OF*0..]-()-[:CAN_MANAGE]->(:Asset{name:"Glossaries"})
UNWIND nodes(p)[1..-1] as group
MATCH (users:User)-[:MEMBER_OF]->(group)
RETURN $Me, collect(users.name) AS Users

如果您从名为"theo“的:User开始,那么它应该足够参数化名称输入,并返回返回中的name参数,而不是像上面那样在节点上访问它。

我还想知道来自Theo的匹配是否真的是必要的,因为看起来您想要的似乎都是可以管理术语表的组成员的用户。如果是这样,您可以从查询中删除Theo部件:

代码语言:javascript
复制
MATCH (users)-[:MEMBER_OF]->(group)<-[:CHILD_OF*0..]-()-[:CAN_MANAGE]->(:Asset{name:"Glossaries"})
RETURN $name collect(users.name) AS Users

对于这一项,我删除了用户和组的标签,但是只有在您的图形结构定义得足够好,这里的关系只能连接到:User和: group节点时,才能这样做。如果其他类型的节点也可以通过这些关系连接,则需要重新添加:User和:Group标签。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46214755

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档