gpt4 book ai didi

neo4j - 密码查询 : Finding all paths between two nodes filtered by relationship properties

转载 作者:行者123 更新时间:2023-12-04 00:50:29 24 4
gpt4 key购买 nike

我有以下图形作为 Neo4j 图形数据库:

                           activates
(80 °F)
(A)------------------------------------->(D)
| \__ _/->^
| \__ activates __/ |
| \__(50 °F) __/ |
| \__ __/ |
| \__ __/ |
activates | \__ __/ |
(50 °F) | \/ | activates
| __/\__ | (50 °F)
| activates __/ \__ |
| (60 °F)__/ \__ |
| __/ \__ |
| __/ \__ |
| __/ \_ |
v / \->|
(B)------------------------------------->(C)
activates
(50 °F)

每个关系都有一个属性,表示“激活”操作所需的温度。

我需要检索 (A) 和 (D) 之间的所有可用路径 哪里沿路径的温度为 50 °F。

输出应包括:
A -[:activates{temperature:'50'}]-> B -[:activates{temperature:'50'}]-> C -[:activates{temperature:'50'}]-> D

A -[:activates{temperature:'50'}]-> C -[:activates{temperature:'50'}]-> D

但不是
A -[:activates{temperature:'80'}]-> D

A -[:activates{temperature:'50'}]-> B -[:activates{temperature:'60'}]-> D

如何编写所需的 Cypher 查询?

提前致谢。

编辑 1:为了更清晰,我添加了另一个对角关系(B -[:activates{temperature:'80'}]-> D)。

编辑 2:我需要检索 (A) 和 (D) 之间的所有可用路径 哪里沿路径的温度相同,即:A -> B -> C -> D,A -> C -> D,A -> D。

最佳答案

START a=node({A}), d=node({D})
MATCH p=a-[r:ACTIVATES*..]-d
WHERE has(r.temperature) and r.temperature='50'
RETURN p;

将括号 (A,D) 中的值替换为其节点 ID

更新:
使用函数 all
START a=node(1), d=node(4) 
MATCH p=a-[r:ACTIVATES*..]-d
WITH head(relationships(p))as r1,p //since the pointer r is a collection of rels we must declare a single relationship pointer
WHERE all(r2 in relationships(p)
where r2.temperature=r1.temperature)
return p;

关于neo4j - 密码查询 : Finding all paths between two nodes filtered by relationship properties,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14104682/

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