簡體   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