【问题标题】:Neo4j Eager and Optional Match IssuesNeo4j 渴望和可选匹配问题
【发布时间】:2015-08-26 08:33:51
【问题描述】:

当我尝试执行以下查询(以创建教师和学生之间的关系)时,我在个人资料中看到一个急切的弹出窗口:

USING PERIODIC COMMIT 10000
LOAD CSV WITH HEADERS FROM "file:/AFile" as line
WITH line
MATCH (teacher:Teacher {ValueOne: toInt(line.ValueOne)})
MATCH (bully:Bully { Value2:toInt(line.ValueTwo)})
MATCH (bully)-[:LOVES]->(student:Student)
CREATE (student)<-[:HELPS]-(teacher)
;

配置文件的结果如下所示:

  • 空结果
  • 更新图表
  • 渴望
  • 过滤器(0)
  • SimplePatternMatcher
  • SchemaIndex(0)
  • SchemaIndex(1)
  • 列过滤器
  • 过滤器(1)
  • 提取
  • 切片
  • 加载CSV

有人推荐了可选匹配here,我在最后一场比赛中尝试这样做:

OPTIONAL MATCH (bully)-[:LOVES]->(student:Student)
WHERE student IS NOT NULL

这导致了错误:

其他节点为空。

我还尝试将学生匹配限制为仅返回一个学生,但这也不起作用。但是,我认为我做得不对,我在其中添加了 WITH student LIMIT 1。

有人对如何减少渴望的数量有建议吗?如果没有最后的创造,我就不会渴望,而有了它,我就会渴望。

按照 Stefan 的建议,我不再渴望,但我收到“其他节点为空”错误。

  • 空结果
  • 更新图表
  • 可选匹配
  • SchemaIndex(0)
  • SchemaIndex(1)
  • 切片
  • 列过滤器
  • 过滤器(0)
  • 提取
  • 加载CSV
  • 过滤器(1)
  • SimplePatternMatcher
  • 论据

【问题讨论】:

    标签: neo4j eager-loading


    【解决方案1】:

    至少在 2.2.2 以下似乎没有eager

    USING PERIODIC COMMIT 10000
    LOAD CSV WITH HEADERS FROM "file:/AFile" as line
    WITH line
    MATCH (teacher:Teacher {ValueOne: toInt(line.ValueOne)})
    MATCH (bully:Bully { Value2:toInt(line.ValueTwo)})
    OPTIONAL MATCH (bully)-[:LOVES]->(student)
    WHERE student IS NOT NULL and "Student" in labels(student)
    MERGE (student)<-[:HELPS]-(teacher)
    

    在与另一端的标签进行可选匹配时,似乎会弹出错误“其他节点为空”。

    【讨论】:

    • 当我使用可选匹配时,我仍然遇到“其他节点为空”
    • 即使没有在OPTIONAL MATCH中指定标签?
    • 是的,很遗憾就是这样。
    • 您能否提供当前数据库(也称为 graph.db 文件夹)和 csv 的前 100 行?
    猜你喜欢
    • 1970-01-01
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    相关资源
    最近更新 更多