2017-07-27 66 views
1

我对Neo4j非常新,但它让我兴奋。但是,我试图模拟CSV文件形式的以下数据时遇到困难。Neo4j数据建模问题

ID  Document Word 
123  Book  Potter,Love,Bond 
124  Book  Love,Game 
134  Pad   Game,Hate 
111  BB   Hate,Level,Awesome 
109  Feat  Awesome 

理想情况下我期待具有ID的每个节点的独特元素,文档列作为节点属性中的一个和所有的话连接到每个ID与关系HAS单个节点。所以,爱情会涉及到两个标识123和124

对暗号查询任何帮助将是巨大的

回答

2

首先创建文档节点和字节点上的约束

CREATE CONSTRAINT ON (d:Document) ASSERT d.id IS UNIQUE 

CREATE CONSTRAINT ON (w:Word) ASSERT d.name IS UNIQUE 

即时猜测你是使用LOAD CSV

LOAD CSV WITH HEADERS FROM "url" as row 
MERGE (d:Document{id:row.ID}) 
ON CREATE SET d.type = row.Document 
with d,split(row.Word,",") as words 
UNWIND words as word  
MERGE (w:Word{name:word}) 
MERGE (d)-[:HAS]->(w) 
+0

感谢您的回复。只是一些事情,那一定是错别字。但我无法解决由于它们导致的错误 1.第二个CREATE约束语句似乎需要w.name而不是d.name 2. MERGE(d:Document {row.ID})语句给出我错误“没有可行的替代输入....” 看着下一个合并我用ID替换行。但是这又抛出了另一个错误,如下所示: “未定义变量id”(第2行,第21列(偏移量:60)) “MERGE(d:Document {d:id})” 任何帮助 谢谢 –

+0

编辑答案... cypher很好,只要取决于你的csv看起来像 –

+0

增加了另一个编辑...文件丢失id: –