【问题标题】:Neo4j - Problems with MATCH JOIN logicNeo4j - MATCH JOIN 逻辑的问题
【发布时间】:2018-03-30 00:05:07
【问题描述】:

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

【问题讨论】:

    标签: neo4j cypher


    【解决方案1】:

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

    尝试在索引和MATCH 子句中使用ProductIDSupplierID

    【讨论】:

      【解决方案2】:

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

      匹配 (a)-[r1]->()-[r3]->(b) 创建唯一 (a)-[:REQUIRES]-(b);

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

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

      向大家致敬! 院长

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多