Preciso adicionar à declaração de retorno da minha consulta Cypher a seguinte compreensão de padrão:
[ (rc:Criterion) WHERE rc.id IN childD.replaceableCriterionIds | {entity: rc} ] AS decisionReplaceableCriteria
mas falha com a seguinte exceção:
Caused by: org.neo4j.driver.exceptions.ClientException: Invalid input 'WHERE': expected "-", "<", <ARROW_LEFT_HEAD> or <ARROW_LINE>
Só funciona quando estou adicionando o relacionamento redundante com outro nó
[ (rc:Criterion)-[:CREATED_BY]->(:User) WHERE rc.id IN childD.replaceableCriterionIds | {entity: rc} ] AS decisionReplaceableCriteria
A parte a seguir é absolutamente redundante para minhas necessidades:
-[:CREATED_BY]->(:User)
É possível reescrever minha compreensão de padrão para evitar essa sintaxe redundante?
Se você estiver usando o Neo4j 5.6+, poderá usar a subconsulta COLLECT . Aqui está um trecho de exemplo:
Nas versões anteriores do Neo4j, você pode tentar um hack:
Isso usa um padrão de caminho de comprimento variável especificando um comprimento de 0. Se você quiser ver se esse padrão de caminho de comprimento variável causa alguma ocorrência de banco de dados, PROFILE sua consulta e observe as
VarLengthExpand
"ocorrências de banco de dados" da operação.