/ / Obter caminho específico como uma saída usando cypher (Neo4j) - neo4j, cypher

Obter caminho específico como uma saída usando cypher (Neo4j) - neo4j, cypher

Eu tenho uma rede gráfica, como mostrado abaixo

insira a descrição da imagem aqui

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 № 1

Você 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:

Configurações de visualização do gráfico

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.