gpt4 book ai didi

neo4j cypher - 如何找到与节点列表有关系的所有节点

转载 作者:行者123 更新时间:2023-12-04 05:38:47 32 4
gpt4 key购买 nike

我有节点 - 名为“选项”。 “用户”选择这些选项。我需要一个像这样工作的 chpher 查询:

检索选择了作为列表给出的所有选项的用户。

MATCH (option:Option)<-[:CHOSE]-(user:User) WHERE  option.Key IN ['1','2','2'] Return user

此查询为我提供了选择 option(1)、option(2) 和 option(3) 的用户,也为我提供了仅选择 option(2) 的用户。

我需要的只是选择所有选项的用户 -option(1)、option(2) 和 option(3)。

最佳答案

对于全密码解决方案(不知道它是否比 Chris 的答案更好,您必须进行测试和比较)您可以收集 option.Key为每个用户过滤掉那些没有 option.Key 的用户对于列表中的每个值

MATCH (u:User)-[:CHOSE]->(opt:Option)
WITH u, collect(opt.Key) as optKeys
WHERE ALL (v IN {values} WHERE v IN optKeys)
RETURN u

或匹配其键在您的列表中的所有选项和选择它们的用户,收集每个用户的这些选项并将选项集合的大小与您的列表的大小进行比较(如果您没有在列表中提供重复的用户具有相同大小的选项集合已选择所有选项)
MATCH (u:User)-[:CHOSE]->(opt:Option)
WHERE opt.Key IN {values}
WITH u, collect(opt) as opts
WHERE length(opts) = length({values}) // assuming {values} don't have duplicates
RETURN u

要么将结果限制为与 {values} 中指定键值的所有选项相关联的用户,并且您可以在不更改查询的情况下改变集合参数的长度。

关于neo4j cypher - 如何找到与节点列表有关系的所有节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21092163/

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