2014-01-13 89 views
0

我已经安装了Neo4j社区版本2,并且遇到了连接节点的小问题。鉴于以下几点:Neo4j关系没有出现

CREATE (Hucksted_Gerald:contributor {name:'Hucksted_Gerald', type:'Individual'}) 
CREATE (contributionID207:contribution {amount:200.00}) 
CREATE (L4N7G2:PostalCode {name:'L4N7G2'}) 
CREATE (C_Gold_Mitch:Candidate {name: 'Gold_Mitch'}) 

这工作得很好,我刚刚创建的四个节点。我会认为这会起作用。相反,它创建了四个没有属性的新节点,原来的四个节点仍然存在,没有任何关系。

CREATE (L4N7G2)<-[:LIVES]-(Hucksted_Gerald)-[:CONTRIBUTED]->(contributionID207)-[:RECEIVED]->(C_Gold_Mitch) 

有没有人有任何想法?我尝试将关系分开,例如只是使用以下内容:

CREATE (L4N7G2)<-[:LIVES]-(Hucksted_Gerald) 

...没有骰子。它再次创建两个没有属性的节点,它们之间存在关系。帮帮我?

回答

1

我相信你已经在1步做这些:

CREATE (Hucksted_Gerald:contributor {name:'Hucksted_Gerald', type:'Individual'}) 
CREATE (contributionID207:contribution {amount:200.00}) 
CREATE (L4N7G2:PostalCode {name:'L4N7G2'}) 
CREATE (C_Gold_Mitch:Candidate {name: 'Gold_Mitch'}) 
CREATE (L4N7G2)<-[:LIVES]-(Hucksted_Gerald)-[:CONTRIBUTED]->(contributionID207)-[:RECEIVED]->(C_Gold_Mitch) 

在你原来的要求,要创建这些节点。在第二个请求中,您引用了以前创建的节点,但控制台没有内存,因此它假定您要创建没有属性的节点。

Neo4j没有“命名”节点的概念,只是标签和属性,所以你在一个查询中根据变量命名所做的操作不会带到另一个查询中。

如果您执行MATCH而不是创建,则可以使您的第二个查询工作。

//编辑:

您可以MATCH取代CREATE在第一个查询,并添加你的第二个查询做到这一点。

MATCH (Hucksted_Gerald:contributor {name:'Hucksted_Gerald', type:'Individual'}) 
MATCH (contributionID207:contribution {amount:200.00}) 
MATCH (L4N7G2:PostalCode {name:'L4N7G2'}) 
MATCH (C_Gold_Mitch:Candidate {name: 'Gold_Mitch'}) 
CREATE (L4N7G2)<-[:LIVES]-(Hucksted_Gerald)-[:CONTRIBUTED]->(contributionID207)-[:RECEIVED]->(C_Gold_Mitch) 
+0

好吧,我会给它一个镜头。听起来似乎合理。 –

+0

我更新了我的答案以提供更好的解释。 – Nicholas

+0

也许你可以详细阐述match + create,以便解决方案也会在答案中:) –