gpt4 book ai didi

Neo4j 匹配多个关系

转载 作者:行者123 更新时间:2023-12-01 02:26:26 25 4
gpt4 key购买 nike

我如何编写一个查询来获取与集合的所有节点都有关系的节点。例如:

START n=node:people("username:*"), 
g=node:groups("groupname:A groupname:B")
MATCH n-[:M]->g
RETURN n

这将返回与 A 或 B 有关系的用户。但我想要与 A 和 B 有关系的用户。但我不知道如何去做。

编辑:

我需要为任意数量的组执行此操作,而不仅仅是 A 和 B。我使用索引语法的原因是这是来自用户输入,所以它可能是这样的:
START n=node:people("username:*"), 
g=node:groups("groupname:*")
MATCH n-[:M]->g
RETURN n

而且我需要返回与所有组具有 M 关系的用户。

最佳答案

START n=node:people("username:*"), 
g=node:groups("groupname:*")
with n, collect(g) as groups
MATCH n-[:M]->ug
with n, collect(ug) as user_groups
where ALL(g in groups WHERE g in user_groups)
RETURN n

它甚至可能像这样工作(应该更快)
START n=node:people("username:*"), 
g=node:groups("groupname:*")
with n, collect(g) as groups
MATCH n-[:M]->ug
WHERE ug in groups
with n, count(*) as found, length(groups) as group_count
WHERE found = group_count
RETURN n

关于Neo4j 匹配多个关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15979677/

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