Aqui está minha declaração Cypher:
match (first1:ent) where first1.nodeid in ['aab40c4d65d5c0a428ed84dc0109b0c4']
match (first2:ent) where first2.nodeid in ['000415fee2b0272cdcc2439f521b2e2e']
CALL apoc.create.vRelationship(first1,'teninvmerge',{conprop:'11'},first2) YIELD rel
RETURN rel,rel.conprop
Como obtenho as propriedades da aresta virtual que defino diretamente?
Não sei se o problema é porque minha declaração está escrita em um problema, ou se a versão 3.5 do APOC não suporta consulta direta de atributos de aresta. Verifiquei a documentação oficial e não encontrei nenhuma informação relevante.
Na verdade, é possível obter propriedades de nós virtuais e relacionamentos, conforme observado na página de documentação Virtual Nodes & Relationships . O Neo4j 3.5 é antigo, e não consigo determinar facilmente se as funções funcionarão nessa versão. Mas elas devem funcionar pelo menos na versão 4.1+ do neo4j.
Observe que em alguns casos uma função Cypher regular também funcionará (por exemplo, estas são verificadas para funcionar na versão 5.x:
ID(vnode)
eTYPE(vrel)
). Mas isso pode depender da versão do neo4j que você está usando, então provavelmente é melhor ficar com as funções APOC documentadas se você estiver trabalhando com versões mais antigas).Por exemplo, pelo menos no neo4j 4.1+, isso deve funcionar:
Essa função ou procedimento não retorna as propriedades (como visto no código principal abaixo do neo4j github). Você pode usar startnode, endnode, type e id(rel), mas não propriedades.
No entanto, você pode fazer algo como abaixo (isso é um hack). Eu atribuí uma variável prop = {conprop:'11'} e então acesso prop como um dicionário como prop.conprop.
Resultado:
Código retirado do neo4j: