refcard - neo4j tutorial
Neo4j Cypher: copie las relaciones y elimine el nodo (2)
No podrá crear un tipo de relación de forma dinámica desde dentro de una colección de relaciones.
Supongamos que incluso si recopilamos todas las relaciones entrantes como se muestra a continuación
START n=node(id1) MATCH n<-[r]-() WITH collect(r) as rels ...
Podrías iterar sobre los registros de la colección pero NO SERÍA capaz de hacerlo a continuación
CREATE (n)-[rels[i]]->(m)
Entonces, suponiendo que todas las relaciones entrantes son del mismo tipo, diga ''foo''. Entonces podrías hacer lo siguiente.
START n=node(id1),m=node(id2)
MATCH n<-[r:foo]-(p)
WITH collect(p) as endNodes,m
FOREACH(i in range(0,length(endNodes)-1) | foreach(a in [endNodes[i]] |
create m<-[:foo]-a
))
En caso de que sus relationshipTypes sean diferentes, puede referirse a esta técnica alternativa: aquí . Puede consultar desde la consola, descargar todo el nodo de inicio, el final, la información de tipo de relación como csv en la hoja de Excel. Y luego ejecute el script cypher para ejecutarlo.
De otra manera es que puede consultar utilizando java api para neo4j y luego almacenar todas las relaciones y nodos, enmarcar sus consultas en consecuencia y volver a disparar.
Intento copiar todas las relaciones internas de un nodo (n)
a otro nodo (m)
(tanto que conozco los identificadores) antes de eliminar (n)
, pero no pude encontrar el código. Las relaciones pueden o no existir.
¿Alguien fragmento?
suponiendo que todas las relaciones entrantes son del mismo tipo, diga ''foo''. Entonces podrías hacer la siguiente consulta más corta:
START n=node(id1),m=node(id2)
MATCH n<-[r:foo]-(p)
WITH collect(p) as endNodes,m
FOREACH(mm in endNodes | CREATE m-[:foo]->mm)
Lo cual evita el doble foreach