阻止合并以创建节点

时间:2014-04-23 09:51:44

标签: neo4j

是否有方法可以阻止cypher中的合并,如果不存在则不创建节点。 我有一个像

这样的查询
FOREACH(p in {props} |
   MERGE (I:Interface {IfIPAddress:p.OrigIPAddress})
  MERGE (I2:Interface {IfIPAddress:p.TermIPAddress})
MERGE (I)-[r:link]->(I2)
SET r = p)

其中道具是数组的映射。

在第一次和第二次合并中,我不希望创建I和I2。可能吗?

2 个答案:

答案 0 :(得分:1)

迭代遍历地图并为每个地图条目动态创建查询是不可能的?即不要在一个查询中进行多个?

答案 1 :(得分:0)

在foreach循环中无法匹配,可能是因为必须单独完成读取和更新操作的更基本限制,请参阅docs。可能有一些方法可以使MERGE像口香糖和胶带一样使用MATCH,但是接受这个限制并为每个操作运行一个平面查询可能更容易。还有其他原因导致你不能运行这样的查询吗?

MATCH (I:Interface {IfIPAddress:p.OrigIPAddress}), (I2:Interface {IfIPAddress:p.TermIPAddress})
MERGE (I)-[r:link]->(I2)
ON CREATE SET r = p

在事务性密码端点上运行它,例如,每个事务的语句数与foreach循环中的迭代次数一样多。