gpt4 book ai didi

neo4j - 如何使用条件返回密码中的数据?

转载 作者:行者123 更新时间:2023-12-05 06:40:04 27 4
gpt4 key购买 nike

我在 Neo4j 中有一个看起来像这样的关系 enter image description here

其中 (A)-[:Relationship]->(B) 和 (B)-[:Relationship]->(C) 使用相同的关系(在本例中为 :Relationship),我想写一个密码条件查询,如果二级关系(A)->(C)的个数大于x,则不显示(B)->(C),即只显示(A)->(B ).

我尝试做类似的事情:

MATCH(A) WHERE id(A)={id}
OPTIONAL MATCH p=(A)-[:Relationship]->(B)
OPTIONAL MATCH q=(A)-[:Relationship]->(B)-[:Relationship]->(C)
RETURN A, p, CASE WHEN COUNT(q)<10 THEN q ELSE [] END AS foo

问题是 foo 总是 q

最佳答案

您是否考虑过匹配具有最大长度的任意路径?沿着这些思路?

MATCH path=(n:Node {name: {id} })-[:RELATIONSHIP*0..9]->(:Node) 
RETURN PATH

或者,您可以使用 APOC,它允许您参数化路径的深度。

MATCH (one:Node {name : {id} })
CALL apoc.path.expand(one, "RELATIONSHIP>", "+Node", 0, {n}) YIELD path AS p
return p

如果您想从起始节点找到特定深度 {n} 的所有节点,但仅当它们小于特定阈值时才返回它们 {lim} 然后你可以做这样的事情

MATCH (one:Node {name : {id} })
CALL apoc.path.expand(one,"RELATIONSHIP>","+Node", 0, {n}) yield path as p
WITH collect(nodes(p)[{n}]) AS nodes_at_depth
RETURN
CASE
WHEN size(nodes_at_depth) < {lim} then nodes_at_depth
ELSE []
END AS nodes_at_depth

或者,您可以只返回该深度的第一个 {lim} 节点

MATCH (one:Node {name : {id} })
CALL apoc.path.expand(one,"RELATIONSHIP>","+Node", 0, {n}) yield path as p
WITH collect(nodes(p)[{n}]) AS nodes_at_depth
RETURN nodes_at_depth[0..{lim}]

关于neo4j - 如何使用条件返回密码中的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43610456/

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