gpt4 book ai didi

graph - 按节点深度排序 neo4j 密码查询

转载 作者:行者123 更新时间:2023-12-05 05:19:22 25 4
gpt4 key购买 nike

我有下图:

graph

我想返回所有拥有 CAN_DISTRIBUTE 的用户Credits通过 Role 附加许可哪个APPLIES_ON一个Group .

以下查询同时返回 saraadmin作为用户名:


MATCH (users)-[:IS]->()<-[:CHILD_OF*0..]-(roles)-[:CAN_DISTRIBUTE]->(asset:Asset{name:"Credits"}),
(roles)-[:APPLIES_ON]->(group:Group{name:"Digital"})
WITH DISTINCT users
RETURN collect(users.name)

现在,我真的很难对他们的 Role 返回的用户进行排序关系深度。我要sara首先返回为 Manager角色是 SuperManager 的 child .在英语中,这就像说,给我所有可以在组 X 上分配信用的用户,按他们的角色层次排序。

你们有什么想法吗?

下面是创建这个图的查询:


CREATE (admin:User{name:"admin"})
CREATE (sara:User{name:"sara"})
CREATE (c:Asset{name:"Credits"})
CREATE (marketing:Group{name:"Marketing"})
CREATE (digital:Group{name:"Digital"})
CREATE (super_manager:Role{name:"SuperManager"})
CREATE (manager:Role{name:"Manager"})
CREATE (manager)-[:CAN_DISTRIBUTE]->(c)
CREATE (admin)-[:IS]->(super_manager)
CREATE (sara)-[:IS]->(manager)
CREATE (super_manager)-[:APPLIES_ON]->(marketing)
CREATE (super_manager)-[:APPLIES_ON]->(digital)
CREATE (manager)-[:APPLIES_ON]->(marketing)
CREATE (manager)-[:APPLIES_ON]->(digital)
CREATE (manager)-[:CHILD_OF]->(super_manager)

最佳答案

你可以使用整个路径的长度来做到这一点,这样:

MATCH p = (users)-[:IS]->()<-[:CHILD_OF*0..]-(roles)-[:CAN_DISTRIBUTE]->(asset:Asset{name:"Credits"}),
(roles)-[:APPLIES_ON]->(group:Group{name:"Digital"})
WITH DISTINCT users, length(p) as pathLength
RETURN users.name
ORDER BY pathLength

给定数据集的输出:

╒════════════╕
│"users.name"│
╞════════════╡
│"sara" │
├────────────┤
│"admin" │
└────────────┘

关于graph - 按节点深度排序 neo4j 密码查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46323990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com