是否有方法可以阻止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。可能吗?
答案 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循环中的迭代次数一样多。