2017-01-02 102 views
0

我是使用Neo4j的初學者,並且最近創建了兩個節點。 節點是:(服務1,服務2)Neo4j關係

服務1:

USING PERIODIC COMMIT 
LOAD CSV with HEADERS FROM "file:/Serv1.csv" AS line 
CREATE (S:Services:Service1  {ID: TOINT (line.ID)}) 
set S.CCL_mv    =ToFloat (line.CCL_mv); 

第一節點的結果是:

ID  CCL_mv 
1  234.00 
2   0 
3   0 
4  -503.00 
5  413.00 
6  -510.00 
7   0 
8  488.00 
9  -488.00 
10   0 
11   0 
12   0 
13  99.23 
14  -99.00 
15   0 
16   0 
18  101.00 
19   0 
20   0 
21  221.0 

服務2:

USING PERIODIC COMMIT 
LOAD CSV with HEADERS FROM "file:/Serv2.csv" AS line 
CREATE (S: Services: Service2 {ID: TOINT (line.ID)}) 
     S.Depth_m   =ToFloat (line.Depth_m); 

第二節點的結果是:

ID  Depth_m  
1  2010.14  
2  1998.97  
3  1998,36  
4  1987,10  
5  1976,30  
6  1965,24 

欲保持(Srvice1 &服務2) 之間的這種關係時(CCL_mv)在服務1是不等於0(<> 0),那麼它應該與服務2的像的第一行:

Service1      Service2 
ID  CCL_mv     ID  Depth_m 
1  234.00 =========>  1  2010.14 

4  -503.00|   
5  413.00| =========> 2  1998.97 
6  -510.00| 

8  488.00|  
9  488.00| =========> 3  1998,36 

13  099.23| 
14  -099.00| =========> 4  1987,10 


And so on 

回答

0

請嘗試以下代碼。當你在這兩個數組中都有一對映射時,這將工作得很好。當Service1類型的節點數大於Service2類型時,您可能需要檢查此查詢。我沒有測試過這種情況。

MATCH (n:Service1) WHERE n.CCL_mv <> 0 
WITH collect(n) as source 
WITH source, range(0, size(source)) AS index 
UNWIND index as i 
MATCH (m:Service2) WHERE i+1 = m.ID 
WITH source[i] as from, m 
CREATE (from)-[r:By_CCL]->(m) RETURN r 
+0

謝謝,我根據你的夢幻般的方式更新我的代碼,這給了我一個燦爛的解決方案,但如果我有兩個或三個,一個映射,我又在我的問題的最後一次更新上述^^。我該如何解決這個問題? 如果你不介意,再看看我的問題:)? –

+0

@ M.Najim - 首先,在別人回答你的原始問題後,不建議改變問題。這使得當前的答案不完整。其次,在我看來,你不能直接用密碼查詢來實現這一點(我可能是錯的)。我建議你編寫一個簡單的python腳本(使用py2neo包),遍歷節點並直接在節點ID上執行關係創建查詢。 – Gandalf