繁体   English   中英

如何在neo4j中为双向关系属性添加值的集合?

[英]How to add collection of values for a bidirectional relationship properties in neo4j?

我正在neo4j中创建2个节点,其方向属性如下所示:
两名员工互相呼叫,并通过CALLED关系彼此连接。

MATCH (e1:EMP),(e2:EMP) WHERE e1.NUMBER='200' AND e2.NUMBER='100' MERGE (e1)-[r:CALLED]->(e2) SET r.DURATION = ['233']    

我的结果如下所示。

在此处输入图片说明

当我在recrese方向上创建关系时:

MATCH (e1:EMP),(e2:EMP) WHERE e1.NUMBER='100' AND e2.NUMBER='200' MERGE (e1)-[r:CALLED]->(e2) SET r.DURATION = "235" +r.DURATION[0..]  

我的结果显示出一些奇怪的东西

在此处输入图片说明

如何在集合中添加两个属性,使其看起来像

在此处输入图片说明

双向的概念仅在查询时存在。 创建关系时,每个关系都必须有一个方向。 您有两个不同的关系,每个方向一个。 从emp 200到100的关系具有一个名为duration的属性,其值为['233']。

接下来,当您在从emp 100到200的相反方向上创建关系时,该关系是新关系,它与较早的关系无关,只是参与的节点相同。 在这个查询中

MATCH (e1:EMP),(e2:EMP) 
WHERE e1.NUMBER='100' AND e2.NUMBER='200' 
MERGE (e1)-[r:CALLED]->(e2) SET r.DURATION = "235" +r.DURATION[0..]  

r.DURATION为空,因为从e1(100)到e2(200)的关系r上尚不存在DURATION属性。

如果要在特定方向上向关系添加持续时间,可以使用类似以下的方法

MATCH (e1:EMP),(e2:EMP) 
WHERE e1.number='100' AND e2.number='200' MERGE (e1)-[r:CALLED]->(e2) 
SET r.DURATION =["335"]+coalesce(r.DURATION,[])

请注意,这会将新的持续时间值插入到emp 100到200之间的关系数组中。emp200到100之间的值是未读和未修改的。 如果希望以相反的方向从关系中追加值,则必须先对其进行匹配才能获得DURATION属性。 这样做意味着双向上的关系具有相同的属性值,然后我要问为什么需要两个关系而不是一个。

如果方向无关紧要,请在e1和e2之间使用单个关系。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM