代码之家  ›  专栏  ›  技术社区  ›  TiMeJuMp

Neo4j:在图中搜索完全相同的子图

  •  0
  • TiMeJuMp  · 技术社区  · 3 年前

    我目前的问题是,我想在另一个节点下找到一个完全相同的子图。

    更具体一点。我有多个维修指南,其中包含多个维修步骤。维修步骤也可以存在于另一个维修指南中。现在我想找到类似的维修指南,它们有完全相同的维修步骤。

    MATCH (mp1:Maintenance{name:'13 Years (325000 km)'})-[:HAS]->(ws:WorkStep)
    WHERE id(mp1)=49214
    with collect(ws) as workingssteps, mp1
    MATCH (mp2:Maintenance)
    

    现在我陷入了困境,如何进一步迭代mp2,从mp1中找到相同的工作步骤。

    感谢您的帮助或提示。 基督教的

    0 回复  |  直到 3 年前
        1
  •  1
  •   cybersam    2 年前

    这里有一种方法可以找到另一种 Maintenance 连接到同一组的节点 WorkStep 节点作为给定 维修 节点:

    MATCH (m:Maintenance)-[:HAS]->(w:WorkStep)
    WHERE m.name = '13 Years (325000 km)'
    WITH m, COLLECT(w) AS ws
    MATCH (other:Maintenance)-[:HAS]->(w1:WorkStep)
    WHERE w1 IN ws
    WITH ws, other, COLLECT(w1) AS w1s
    WHERE ALL(x IN ws WHERE x IN w1s)
    RETURN other
    

    我以上假设 name 的属性 维修 节点是唯一的。通过本机ID查找节点/关系通常不是一种可靠的做法,因为删除实体后可以重用本机ID。此外 ID() 函数现在已弃用。

    推荐文章