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

txu3uszq  于 2023-06-22  发布在  其他
关注(0)|答案(1)|浏览(156)

我现在有一个问题,我想在另一个节点下找到一个完全相同的子图。
更具体一点。我有多个修复指南,其中有多个修复步骤。修复步骤也可以存在于另一个修复指南中。现在我想找到类似的修复指南,有完全相同的修复步骤。

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相同的工作步骤。
感谢任何帮助或提示。克里斯蒂安

lf5gs5x2

lf5gs5x21#

以下是查找与给定Maintenance节点连接到同一组WorkStep节点的其他Maintenance节点的一种方法:

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

上面我假设Maintenance节点的name属性是唯一的。通过节点/关系的本地ID来查找节点/关系通常不是可靠的实践,因为本地ID可以在实体删除之后被重用。此外,ID()函数现在已弃用。

相关问题