Neo4j - MATCH JOIN逻辑的问题

时间:2018-03-30 00:05:08

标签: neo4j cypher

我在创建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个关系。还有什么方法可以看到数据库结构?我该如何调试此问题?非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

我认为您可能使用了错误的大小写属性名称。 NorthWind数据使用大写的第一个字母作为其属性名称。

尝试在索引和ProductID子句中使用SupplierIDMATCH

答案 1 :(得分:0)

感谢所有建议。使用Neo4j,总有多种方法可以解决问题。我做了一些挖掘,发现了一个相当简单的解决方案。

比赛(a) - [r1] - >() - [r3] - >(b)创造独特(a) - [:要求] - (b);

文字代码(对我来说)是: MATCH(a:应用程序) - [:CONSISTS_OF] - >() - [:USES] - >(o:Object)CREATE UNIQUE(a) - [:REQUIRES] - (o);

这将关系(n2)分组并创建了虚拟关系,使得单个n2节点对于查询而言是多余的。

Namaste所有人! 迪安