2015-02-09 78 views
1

我已导入CSV,其中每个节点包含3列。 id,parent_id和标题。这是我在mysql中的一个简单的树结构。现在我需要在考虑parent_id数据的那些节点之间创建关系。所以每个节点到节点将有2个关系作为父母和孩子。我对node4j真的很陌生吗?如何使用属性信息生成关系[Node4j]

我尝试以下,但没有运气

MATCH (b:Branch {id}), (bb:Branch {parent_id}) 
CREATE (b)-[:PARENT]->(bb) 

回答

1

它好像你的暗号是非常接近的。您要做的第一件事是为标签Branchidparent_id属性创建一个索引。

CREATE INDEX ON :Branch(id) 

CREATE INDEX ON :Branch(parent_id) 

一旦索引创建要匹配所有的标签Branch节点(我将与一个特定的值限制此启动,以确保你创建你想要什么),并为每个找到通过匹配您的索引属性来查找相应的父项。

MATCH (b:Branch), (bb:Branch) 
WHERE b.id = ??? 
    AND b.parent_id = bb.id 
CREATE (b)-[:PARENT]->(bb) 

一旦你已经证明了这一点,在一个分支,你会得到你期望我会立即运行更多的分支结果。您仍然可以选择根据图表中分支的数量分批进行。

在创建了所有:PARENT关系后,您可以选择删除所有parent_id属性。

MATCH (b:Branch)-[:PARENT]->(:Branch) 
WHERE exists(b.parent_id) 
REMOVE b.parent_id