2017-04-25 1 views
0

Comment fusionner des nœuds dans une requête avec apoc.refactor.mergeNodes([]) et ensuite faire quelque chose à propos du nœud fusionné? Quand j'utilise ceci:Comment utiliser apoc.refactor.mergeNodes ([])

WITH w2, minW, minW {.*} as snapshot 
call apoc.refactor.mergeNodes([minW,w2]) YIELD reW 
SET reW.first_seen =... 

Cette erreur est renvoyée: Unknown procedure output: reW

Si au lieu d'utiliser reW, minW est utilisé, l'erreur indique que la variable a déjà été decleared

Répondre

1

procédures déclarent la variables produites par eux. Vous pouvez soit vérifier la variable produite dans la documentation (ce qui dans ce cas ne va pas aider, il n'est pas montré pour cette procédure dans APOC docs, je vais essayer d'obtenir un correctif), ou appelez apoc.help() et passer dans la procédure nom, comme:

call apoc.help('apoc.refactor.mergeNodes') 

La sortie de signature doit afficher la variable produite. Dans ce cas, c'est node, alors utilisez YIELD node, bien que vous puissiez l'alias en utilisant as comme vous le souhaitez.

+0

Apparemment, la fusion viole la contrainte que j'ai définie. Y a-t-il un moyen de contourner cela? – Aqqqq

+0

vous voulez dire quelque chose comme ça https://github.com/neo4j-contrib/neo4j-apoc-procedures/issues/397 –

+0

Non ça ressemble plus à quelque chose qui viendrait quand neo4j essaye de créer un noeud répété selon la contrainte . La sortie d'erreur est la suivante: Impossible d'invoquer la procédure 'apoc.refactor.mergeNodes': Provoquée par: org.neo4j.graphdb.ConstraintViolationException: le noeud 50783 existe déjà avec le libellé Wallet et la propriété" primWallAddr "= [1CzbWrLswUJVCJZjHecp6Q4ce6VrGNAXoT] – Aqqqq