我使用Neo4j来表示网络。
在我的用例中,当我删除一个连接两个或更多图形组件的节点时,我希望添加一条边以确保组件仍然连接。
例如,如果我有下面的图表:
A - B - D
|
C
节点B
是A
、C
和D
之间的桥,如果我删除它,这些组件将断开连接。因此,删除B
后,我希望得到如下结果:
A - D or A - D
| |
C C
或者确保剩余组件仍然以某种方式连接的任何其他组合。
我正在努力编写一个Cypher查询来实现这个规范,并且还没有能够在网上找到解决方案。想知道我是否可以在这里找到一些帮助!
注意:在我的系统中,边被视为无向的(这就是为什么我在上图中没有使用箭头)。
1条答案
按热度按时间ws51t4hk1#
您可以选择性地比对已连接的节点,并在删除节点B后连接这些节点。
以下查询不会产生您需要的确切结果,但它会保持节点连接。
说明:
第1行-〉查找
b
节点第2行-〉查找相关节点(n1 & n2)
第3行-〉删除节点
第4行-〉检查n1和n2不为空,否则密码将抛出错误
第5行-〉使用MERGE添加关系,它将仅在节点尚未连接时创建关系。
1.OPTIONAL MATCH是必需的,否则它将不会删除未连接到任何节点的B节点。
1.当n1或n2为NULL时,需要NULL检查(n2不为NULL且n1不为NULL)以避免错误。