2016-12-04 41 views
0

我是neo4j的noob,我的問題看起來很簡單。 我有CSV文件,其結構如下: Structure創建獨特節點並製作具有多個值的標籤

Id是Person ID,Fam是項目ID,此人蔘與其中。 如果他們在同一個項目上工作,我想連接人員。

這種情況下最好的數據模型是什麼?首先讓我想到的是使id - 節點和Fam標籤。但我不知道如何將多個標籤加載到一個節點。 其次是將id和Fam作爲節點,然後進行查詢以顯示相關員工。

對於第二種情況的代碼將是這樣的:

LOAD CSV WITH HEADERS FROM 'file:///PNG20161202.csv' AS line 
MERGE (n:id {Person_id: toInt(line.id)}) 
WITH line, n 
MERGE (m:Fam {Fam_id: toInt(line.Fam)}) 
WITH m,n 
MERGE (n)-[:WORK_IN]->(m); 

但我不知道該怎麼只顯示相關的ID。 (我需要導出和可視化這個網絡在Gephi,只有身份證)

對於第一種情況,我知道如何使id之間的關係,但不知道如何編寫LOAD CSV查詢,這將使id與多標籤。

建議非常感謝。

回答

1

我相信,從表格和當前數據的角度來看,你對此的想法太多了,所以你錯過了想要建模的大局。對於圖形數據庫,從實體(您正在建模的重要「事物」)和它們之間的關係來考慮更容易。

此,我想,是你的描述中最重要的部分:

「ID是一個人的ID,並祕境是一個項目的ID,在這個人了 一部分,我想連接的人如果他們在同一個項目上工作的話。「

你提到的重要的「事情」是人員和項目。因此,在我看來,這些是您應該使用的標籤:Person和:Project。 ID往往是唯一的,所以它們應該屬於:Person和:Project節點,對標籤和ID屬性具有唯一約束。

你可以設置你的唯一約束,像這樣:

CREATE CONSTRAINT ON (p:Person) 
ASSERT p.ID IS UNIQUE 

CREATE CONSTRAINT ON (pr:Project) 
ASSERT pr.ID IS UNIQUE 

你的進口只會是連接:人員:項目他們的工作的。

LOAD CSV WITH HEADERS FROM 'file:///PNG20161202.csv' AS line 
MERGE (n:Person {ID: toInt(line.id)}) 
MERGE (m:Project {ID: toInt(line.Fam)}) 
MERGE (n)-[:WORKED_ON]->(m); 

一旦你有了這個,它應該很容易查詢:誰在同一個工作人員:計劃,你不需要爲一個LOAD CSV。

編輯

爲了創建:KNOWS之間的關係:誰在同一個工作人員:項目,您可以使用此查詢:

MATCH (p1:Person)-[:WORKED_ON]->(:Project)<-[:WORKED_ON]-(p2:Person) 
WITH DISTINCT p1, p2 
MERGE (p1)-[:KNOWS]-(p2) 
+0

嗨InverseFalcon,我想要做的,只是聊表人與人之間的關係。如果他們在同一個項目上工作,他們[:知道]對方。希望對此查詢有幫助。提前致謝! –

+0

我編輯我的答案,包括查詢來創建這些關係。 – InverseFalcon

+0

謝謝,你已經回答了我的問題,如果你能幫助我出口這些東西會很好,如果沒有,我會自己研究)) –

相關問題