如何在Memgraph中查询存在多条并行连接的设备
查找Memgraph中存在指定数量并行链路的设备对
要筛选出存在多条并行连接的设备对,你可以通过统计设备间的接口连接数来实现。以下是针对需求的查询语句:
// 可修改WHERE条件中的数字,指定需要的并行链路数量 MATCH (d1:Device)-[:IS_IN]-(if1:Interface)-[:CONNECTED]-(if2:Interface)-[:IS_IN]-(d2:Device) WHERE id(d1) < id(d2) // 避免重复统计同一设备对(如d1-d2和d2-d1) WITH d1, d2, COUNT(DISTINCT if1) AS link_count WHERE link_count >= 2 // 这里设置需要的并行链路数量 RETURN d1.name AS device1, d2.name AS device2, link_count ORDER BY link_count DESC;
语句说明:
MATCH子句:匹配设备-接口-连接-接口-设备的完整路径,覆盖所有接口连接关系WHERE id(d1) < id(d2):通过节点ID的大小比较,确保同一对设备只被统计一次,避免重复结果COUNT(DISTINCT if1):统计两个设备之间的独立接口连接数,也就是并行链路的数量(每条链路对应一对接口)- 最后通过
link_count >= 2筛选出符合要求的设备对,你可以根据需求修改这个数值
补充:数据创建语句的小问题
当前的数据创建代码有两处需要修正,否则无法生成有效并行链路:
- 创建d2时变量名重复:应把
CREATE (d1:Device {name: 'd2', id:3})改为CREATE (d2:Device {name: 'd2', id:3}),避免覆盖d1变量 - 连接接口时匹配的ID不存在:
MATCH (if1:Interface {id:3})里的id:3没有对应的接口,需改成已创建的接口ID(比如2和4)才能生成有效连接
内容的提问来源于stack exchange,提问作者Francisco Sedano
相关产品推荐
相关产品推荐

