Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Neo4j 如何连接3个节点_Neo4j_Graph Databases_Spring Data Neo4j - Fatal编程技术网

Neo4j 如何连接3个节点

Neo4j 如何连接3个节点,neo4j,graph-databases,spring-data-neo4j,Neo4j,Graph Databases,Spring Data Neo4j,我刚开始使用Neo4j,有人能解释一下我是如何做到这一点的吗。我有一个csv文件,其中包含3列,如下所示 offences| places | recorded rape | nicosia| 1 robbery | nicosia| 3 rape | limasol| 4 robbery | limasol| 5 我想要的是一种将犯罪与地点联系起来的方法,这里记录的数字就是我想到的 LOAD CSV FROM 'file:///crime2.csv' AS Line

我刚开始使用Neo4j,有人能解释一下我是如何做到这一点的吗。我有一个csv文件,其中包含3列,如下所示

offences|  places | recorded
rape    |  nicosia| 1
robbery |  nicosia| 3
rape    |  limasol| 4
robbery |  limasol| 5
我想要的是一种将犯罪与地点联系起来的方法,这里记录的数字就是我想到的

LOAD CSV FROM 'file:///crime2.csv' AS Line 
MERGE (district:DISTRICT { Name: Line[1]})
CREATE (crime:CRIME { Name: Line[0]})
CREATE (number:Number{ Name:toInteger(Line[2])})
CREATE (number)-[:Amount]->(crime)-[:From]->(district)
WITH district, crime, number
MATCH (a:CRIME)-[:`From`]->(b:DISTRICT) RETURN a,b; 
我的代码没有完全处理作业,而是显示如下


我需要一种方式来显示地点->犯罪->记录的号码。谢谢

您只需将数字添加到
匹配
查询中即可

LOAD CSV FROM 'file:///crime2.csv' AS Line 
MERGE (district:DISTRICT { Name: Line[1]})
CREATE (crime:CRIME { Name: Line[0]})
CREATE (number:Number{ Name:toInteger(Line[2])})
CREATE (number)-[:Amount]->(crime)-[:From]->(district)
WITH district, crime, number
MATCH p = (:Number)-[:AMOUNT]->(:CRIME)-[:`From`]->(:DISTRICT) RETURN p;
不过,您的建模可能有问题。我不会创建一个数字作为一个单独的节点,但我会将数量存储在“地区与犯罪或其他关系”的属性中。你现在这样做没有意义

另一个需要补充的是,你可能想要改变


创建(犯罪:犯罪{名称:行[0]})


合并(犯罪:犯罪{名称:行[0]})


因此,对于特定的犯罪,有一个节点,因为这是图形数据库,您希望将数据连接到IMO。

您可以在查询中再添加一个节点匹配条件

MATCH (n:Number)-[:Amount]->(a:CRIME)-[:From]->(b:DISTRICT) RETURN a,b,n; 
如果您在任何实际的用例/项目中使用它,那么您需要考虑您正在使用的数据模型(如@Tomaz所建议的)

编辑:

我在笔记本电脑上尝试了上述查询,结果得到了预期的结果

我建议您将数据加载查询和返回查询分开,因为每次运行此查询时都会复制一半的数据

您使用了create子句,该子句在每次运行此查询时都会再次创建create和Number节点

删除现有数据:

MATCH (n:Number),(a:CRIME),(b:DISTRICT) DETACH DELETE  a,b,n;
加载数据

LOAD CSV FROM {path} AS Line  
MERGE (district:DISTRICT { Name: Line[1]}) 
CREATE (crime:CRIME { Name: Line[0]}) 
CREATE (number:Number{Name:toInteger(Line[2])}) 
CREATE(number)-[:Amount]->(crime)-[:From]->(district);
得到结果:

MATCH (n:Number)-[:Amount]->(a:CRIME)-[:From]->(b:DISTRICT) RETURN a,b,n;

我们如何确定哪个号码适用于特定的任何地区?再添加一个匹配项后,关系不会显示在图表中。。我该怎么修理它。。就像我想让它像我在问题上贴的图片一样