Eu tenho uma rede gráfica, como mostrado abaixo
O que eu quero é obter "apenas" o caminho mais longo entre o Nó 1 e o Nó 4. Escrevi a consulta da seguinte maneira:
MATCH p = ((n {name: "1"})-[:Relation*..]-(n1{name: "4"}))
WITH max(length(p)) AS pathLength
MATCH p1 = ((n {name: "1"})-[:Relation*..]-(n1{name: "4"}))
WHERE length(p1) = pathLength
RETURN p1
No entanto, a consulta retorna todos os relacionamentos entre os nós (a imagem acima é realmente o resultado da consulta) que fazem parte do caminho. Existe alguma maneira de evitar isso?
Novo no Neo4j, qualquer ajuda seria apreciada.
obrigado
Respostas:
1 para resposta № 1Você está usando o pathLength
de todos os caminhos possíveis entre n
e n1
. Tente encomendar e limitar pathLength
:
MATCH p = ((n {name: "1"})-[:Relation*..]-(n1{name: "4"}))
WITH length(p) AS pathLength
ORDER BY pathLength DESC // greater path lengths first
LIMIT 1 // get only the greatest
MATCH p1 = ((n {name: "1"})-[:Relation*..]-(n1{name: "4"}))
WHERE length(p1) = pathLength
RETURN p1
Editar:
Além disso, tentei fornecer um valor estático (3) na condição where. Não parecia mudar nada.
Provavelmente a opção "Conectar nós de resultado" deseu navegador Neo4j está ativado. Quando esta opção está ativada, o navegador Neo4j tentará conectar os nós resultantes no modo de visualização de gráfico. Para desabilitá-lo Para alcançar o resultado desejado, você deve ir para a seção "Visualização de Gráfico" das Configurações do Navegador Neo4j e desmarcar a opção "Conectar nós de resultado", como mostra a imagem abaixo:
Os relacionamentos "extras" são mostrados apenas no modo de visualização de gráfico. Se você mudar para Tabela, Texto ou Código, esse relacionamento não será mostrado.