在Neo4J中创建关系

在Neo4J中创建关系,neo4j,cypher,Neo4j,Cypher,我对Neo4J(以及一般的数据库)是新手。我读过《学习Neo4J》一书,在创建节点方面没有问题。我在建立人际关系方面有很大的问题。这些节点代表国家(只有两个),也代表城市(八个) 以下是我的CREATE语句,用于创建国家/地区节点: CREATE(SG: Country {Name:'Singapore', FullName:'Republic of Singapore'}) CREATE(MY: Country {Name:'Malaysia', FullName:'Malaysi

我对Neo4J(以及一般的数据库)是新手。我读过《学习Neo4J》一书,在创建节点方面没有问题。我在建立人际关系方面有很大的问题。这些节点代表国家(只有两个),也代表城市(八个)

以下是我的
CREATE
语句,用于创建国家/地区节点:

CREATE(SG: Country {Name:'Singapore', FullName:'Republic of
   Singapore'})
CREATE(MY: Country {Name:'Malaysia',
   FullName:'Malaysia'})
以下是我创建城市的CREATE语句:

CREATE(City1: City {Name:'Singapore'})
CREATE(City2: City {Name:'Kuala Lumpur'})
CREATE(City3: City {Name:'Johor Bahru'})
CREATE(City4: City {Name:'Malacca'})
CREATE(City5: City {Name:'Georgetown'})
CREATE(City6: City {Name:'Alor Star'})
CREATE(City7: City {Name:'Klang'})
CREATE(City8: City {Name:'Shah Alam'})
到目前为止还不错。但当我发出这些命令来创建关系时,它们不起作用:

CREATE(City1)-[:CITY_IN]->(SG)
CREATE(City2)-[:CITY_IN]->(MY)
CREATE(City3)-[:CITY_IN]->(MY)
CREATE(City4)-[:CITY_IN]->(MY)
CREATE(City5)-[:CITY_IN]->(MY)
CREATE(City6)-[:CITY_IN]->(MY)
CREATE(City7)-[:CITY_IN]->(MY)
CREATE(City8)-[:CITY_IN]->(MY)
我做错了什么?多谢各位

诚恳地,
CKLee

我猜你是在浏览器/shell中分别运行了这三个密码块吧

如果是这样,那么您就丢失了标识符所代表的内容。如果您将其作为一个事务运行,这将起作用-

CREATE(SG: Country {Name:'Singapore', FullName:'Republic of
   Singapore'})
CREATE(MY: Country {Name:'Malaysia',
   FullName:'Malaysia'})
CREATE(City1: City {Name:'Singapore'})
CREATE(City2: City {Name:'Kuala Lumpur'})
CREATE(City3: City {Name:'Johor Bahru'})
CREATE(City4: City {Name:'Malacca'})
CREATE(City5: City {Name:'Georgetown'})
CREATE(City6: City {Name:'Alor Star'})
CREATE(City7: City {Name:'Klang'})
CREATE(City8: City {Name:'Shah Alam'})
CREATE(City1)-[:CITY_IN]->(SG)
CREATE(City2)-[:CITY_IN]->(MY)
CREATE(City3)-[:CITY_IN]->(MY)
CREATE(City4)-[:CITY_IN]->(MY)
CREATE(City5)-[:CITY_IN]->(MY)
CREATE(City6)-[:CITY_IN]->(MY)
CREATE(City7)-[:CITY_IN]->(MY)
CREATE(City8)-[:CITY_IN]->(MY)

值得一读Neo4j开发人员手册。关于这个特殊问题,需要记住的关键是,用于绑定到图形元素(SG、MY、City1、City2等)的变量仅在查询期间存在,如果没有明确包含在WITH中,甚至可能由于WITH子句而超出范围。它们永远不会保存到数据库中。