大体需求如下:数据库里只存了一种节点,节点有一个参数【类型】,可能是A,B,C,两个节点之间会双向链接,连接关系也只有一种。
要求计算所有的【环】,环要从B类型的节点出发,每步只连接C类型的节点,最后连接到一个和起点相连的B类型节点/原节点结束。以下是我学了一宿写出来的的CQL,200个节点,800个连接关系,每次一搜都得20多秒,感觉好慢啊!
MATCH (start:Device {type: "B"})
CALL apoc.path.expandConfig(start, {
relationshipFilter: "CONNECTED_TO>",
labelFilter: ">Device",
minLevel: 1,
maxLevel: 9999,
uniqueness: 'NODE_PATH'
}) YIELD path
WHERE LENGTH(path) >= 3
AND ALL(node IN nodes(path)[1..-1] WHERE node.type = "C")
AND last(nodes(path)).type = 'B'
AND id(start) <= id(last(nodes(path)))
RETURN path