Cypher Query创建多个关系



我正在尝试创建一个用于创建节点之间关系的通用查询。问题是当一个匹配失败时,另一个会被忽略。以下查询应创建3个关系。但它不仅仅是2。非常感谢你的帮助。我是Cypher的乞丐Vince

MATCH (a:Strata),(b) WHERE a.uid = 'strata60' AND b.uid= 'cmCharacteristic' CREATE (a)-[r:IS_CONSTITUTED_BY]->(b)
 WITH 1 as dummy 
 MATCH (a:Strata),(b) WHERE a.uid = 'strata60' AND b.uid= 'cloudCharacteristic' CREATE (a)-[r:IS_CONSTITUTED_BY]->(b) 
WITH 1 as dummy 
 MATCH (a:Strata),(b) WHERE a.uid = 'strata60' AND b.uid= '' CREATE (a)-[r:IS_CONSTITUTED_BY]->(b) 
WITH 1 as dummy 

 MATCH (a:Strata),(b) WHERE a.uid = 'strata60' AND b.uid= '' CREATE (a)-[r:IS_CONSTITUTED_BY]->(b) 
WITH 1 as dummy 
 MATCH (a:Strata),(b) WHERE a.uid = 'strata60' AND b.uid= 'mFeCharacteristic' CREATE (a)-[r:IS_CONSTITUTED_BY]->(b)
 WITH 1 as dummy 
 MATCH (a:Strata),(b) WHERE a.uid = 'strata60' AND b.uid= '' CREATE (a)-[r:IS_CONSTITUTED_BY]->(b)

您可以在所有后续的上使用OPTIONAL MATCH而不是MATCH。如果这些不存在,您的查询就不会失败。

更通用的查询

match (a:Strata {uid: 'strata60'}), b where b.uid in ['x', 'cmCharacteristic']
with a, collect(b) as bs
foreach (b in bs | create unique a-[:REL]->b)

这将只匹配给定数组中具有有效uidb节点,并为它们中的每一个创建一个关系,因此,如果列表中有无效的uid,这不会失败(它们将被忽略)。

如果至少存在一个有效的b,则将运行该查询;否则它将失败,这是可以的,因为无论如何都不应该创建任何关系。

相关内容

  • 没有找到相关文章

最新更新