Neo4j-如何忽略同一节点多次出现的模式
如何在查询最短路径时忽略同一节点多次出现的匹配模式,如附图中的纵向匹配。 A到C的最短路径给出Neo4j-如何忽略同一节点多次出现的模式,neo4j,cypher,Neo4j,Cypher,如何在查询最短路径时忽略同一节点多次出现的匹配模式,如附图中的纵向匹配。 A到C的最短路径给出 start a=node:node_auto_index(point='A'),c=node:node_auto_index(point='c') match p=a-[r:CONNECTS*]->c return p; 1. A-> C 2. A -> B -> C -> A -> C 3. A -> B -> C 4. A -> C -&g
start a=node:node_auto_index(point='A'),c=node:node_auto_index(point='c') match p=a-[r:CONNECTS*]->c return p;
1. A-> C
2. A -> B -> C -> A -> C
3. A -> B -> C
4. A -> C -> A -> C
5. A -> B -> A -> C
6. A -> C -> B -> A -> B -> C
9个模式中有更多个,但在某些模式中,相同节点或起始和结束节点多次出现,这类似于不相关的输出,因此我如何识别和忽略路径中有任何节点多次出现的模式 您没有使用最短路径。正确的查询是:
start a=node:node_auto_index(point='A'),
c=node:node_auto_index(point='c')
match p=shortestPath((a)-[r:CONNECTS*]->(c))
return p;
或者
allshortestpath
找到了上述情况的解决方案
START a=node:node_auto_index(point='a'),
c=node:node_auto_index(point='c')
MATCH path= a-[r:CONNECTS*]->c
WHERE ALL(n in nodes(path) where 1=length(filter(m in nodes(path) : m=n)))
RETURN path;
现在,其结果仅为预期的有效路径:-)
您正在使用哪个版本的Neo4j?@jjaderberg版本1.9.5对于上述情况,
shortestpath
和allshortestpath
都返回直接连接A->C,但我需要所有可能的有效连接,如A->B->C和A->C
1. A -> B -> C
2. A -> C