【发布时间】:2020-02-29 06:42:30
【问题描述】:
我有一个包含Airport 节点和Flight 关系的图,我想从一个特定节点中找到三角形,其中边的长度都在 10% 以内。
MATCH path = (first:Airport{ID: 12953})-[f1:Flight]->
(second:Airport)-[f2:Flight]->
(third:Airport)-[f3:Flight]->
(last:Airport{ID: 12953})
WHERE second.ID <>first.ID AND
third.ID <>first.ID AND
f1.Distance<=(1.1*f2.Distance) AND
f1.Distance<=(1.1*f3.Distance) AND
f2.Distance<=(1.1*f1.Distance) AND
f2.Distance<=(1.1*f3.Distance) AND
f3.Distance<=(1.1*f1.Distance) AND
f3.Distance<=(1.1*f2.Distance)
WITH (first.ID, second.ID, third.ID) as triplet
return count(DISTINCT triplet)
我只想返回一组节点一次(无论它们之间存在多少不同的航班),但with 行不起作用。基本上我想要创建的是一种新类型的变量“对象”,它具有三个 ID 作为其属性并在其上运行不同。在neo4j中这可能吗?如果没有,有什么解决方法吗?
【问题讨论】:
-
目前我正在考虑的是,由于所有 ID 都是 5 位长,我将
first.ID乘以 10^10,second.ID乘以 10^5 并将这些与未修改的third.ID相加,因为这会为每组节点创建一个唯一编号。但在我看来,这是一个非常丑陋的解决方法 -
你能关闭这个问题的早期版本吗? stackoverflow.com/questions/58683952/….
标签: sql neo4j graph-databases