我在创建JOIN(MATCH)关系时遇到问题。我正在使用Neo4j示例将Northwinds图数据库加载作为我的学习示例。
我有2个简单的CSV文件,我通过LOAD CSV FROM HEADERS成功加载。然后我设置了2个索引,每个实体一个。我的最后一步是创建MATCH(JOIN)语句。这是我遇到问题的地方。
在运行脚本之后,我的返回消息是"(没有更改,没有记录)"而不是告诉我它创建了多少关系。这是我的脚本行:
LOAD CSV WITH HEADERS FROM 'FILE:///TestProducts.csv' AS row
CREATE (p:Product)
SET p = row
添加了113个标签,创建了113个节点,设置了339个属性,在309毫秒后完成。
LOAD CSV WITH HEADERS FROM 'FILE:///TestSuppliers.csv' AS row
CREATE (s:Supplier)
SET s = row
添加了23个标签,创建了23个节点,设置了46个属性,在137毫秒后完成。
CREATE INDEX ON :Product(productID)
添加了1个索引,在20毫秒后完成。
CREATE INDEX ON :Supplier(supplierID)
添加了1个索引,在2毫秒后完成。
MATCH (p:Product),(s:Supplier)
WHERE p.supplierID = s.supplierID
CREATE (s)-[:SUPPLIES]->(p)
(无变化,无记录)
为什么呢?如果我运行Northwinds示例,使用示例文件,它可以工作。它说创造了77个关系。还有什么方法可以看到数据库结构?我该如何调试此问题?非常感谢任何帮助。
答案 0 :(得分:1)
我认为您可能使用了错误的大小写属性名称。 NorthWind数据使用大写的第一个字母作为其属性名称。
尝试在索引和ProductID
子句中使用SupplierID
和MATCH
。
答案 1 :(得分:0)
感谢所有建议。使用Neo4j,总有多种方法可以解决问题。我做了一些挖掘,发现了一个相当简单的解决方案。
比赛(a) - [r1] - >() - [r3] - >(b)创造独特(a) - [:要求] - (b);
文字代码(对我来说)是: MATCH(a:应用程序) - [:CONSISTS_OF] - >() - [:USES] - >(o:Object)CREATE UNIQUE(a) - [:REQUIRES] - (o);
这将关系(n2)分组并创建了虚拟关系,使得单个n2节点对于查询而言是多余的。
Namaste所有人! 迪安