2012-06-27 26 views
6

Copio parte de mi Main Neo4j Graph (mainDB) en otro Graph (dupDB), mientras hago así cómo puedo crear un Node en dupDB que tenga propiedades similares a uno en mainDB.¿Cómo crear un nodo duplicado desde un nodo en Neo4j?

lo haría

Node main = mainDB.getNodeByID(477); 
Node dup = dupDB.createNode(); 

Ahora tengo que copiar cada propiedad principal para dup manualmente, ¿Hay algún método de una línea para hacer esto?

+0

¿Está simplemente duplicando el nodo y las propiedades o incluso sus relaciones, p. un subgrafo? En general, haga la copia haciendo un bucle sobre los puntales, con Cypher podría usar un mapa como parámetro para insertarlo, vea http://docs.neo4j.org/chunked/snapshot/query-create.html#create-create- single-node-from-map –

+0

Solo propiedades. De todos modos, los había copiado de forma manual, era curioso si había un método directo. – Sravan

+1

no, no hay. –

Respuesta

3

Puede crear un duplicado con un mapa en Ne04j 2.1 (no estoy seguro de la anterior)

match (n:Node {name: 'abc'}) 
with n as map 
create (copy:Node) 
set copy=map return copy 

Si usted tiene una restricción de unicidad en cualquiera de las propiedades que se producirá un error, aunque con el mensaje ...

nodo ya existe con la etiqueta de "propiedad" propiedad XX y = [valor]

Usted puede evitar eso al proporcionar un nuevo valor para la propiedad con la restricción de exclusividad, crear el nuevo nodo y copiar los otros valores de propiedad no exclusivos del nodo original.

match (n:Node {name: 'abc'}) 
with n as map 
create (copy:Node {name: 'def'}) 
set copy.property1 = map.property1 
, copy.property2 = map.property2 
return copy