使用Cypher中的一个CASE / FOREACH语句添加多个属性

时间:2017-07-05 09:44:35

标签: foreach neo4j cypher case

我试图根据几种不同的情况创建与属性的关系。我以为我可以使用FOREACH和CASE。

以下是我的代码的简化版本:

$array = explode(",`",$str);
foreach($array as $m)
    echo "<br>`$m";

问题:

  • 似乎我无法在FOREACH中创建数组类型变量 plugType
  • 对于ELSE案例,我不想创建这种关系。现在,关系属性 plugType 的值只是空的,而不是整个关系不存在。

注意:WHERE条件可确保我使用正确的硬件设备和电缆。文件 hwconnectIDs.csv 基本上提供了设备 h1 h2 的列表,这些设备通过电缆 c 进行链接。

有没有办法根据Cypher中的几种不同情况执行命令,如 if / elseif /../ else 在其他语言中?

1 个答案:

答案 0 :(得分:0)

您可以利用WITH子句(以下简化):

...
WITH h1, h2, c, 
CASE 
WHEN (h1.plug1=c.plug1 AND c.plug2=h2.plug1) THEN [c.plug1,c.plug2]
WHEN (h1.plug2=c.plug2 AND c.plug1=h2.plug1) THEN [c.plug2,c.plug1]
ELSE [] END AS plugtype
CREATE ...

希望这有帮助, 汤姆