2012-06-27 19 views
6

Sto copiando parte del mio grafico Main Neo4j (mainDB) in un altro grafico (dupDB), mentre faccio così come posso creare un nodo in dupDB con proprietà simili a quello in mainDB.Come creare un nodo duplicato da un nodo in Neo4j?

Farei

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

Ora devo copiare ogni proprietà in principale per dup manualmente, è Esiste un metodo di una riga per fare questo?

+0

Si sta semplicemente duplicando il nodo e le proprietà o persino le sue relazioni, ad es. un sottografo? Generalmente esegui la copia eseguendo il looping dei puntelli, con Cypher puoi usare una mappa come parametro per inserirla, vedi http://docs.neo4j.org/chunked/snapshot/query-create.html#create-create- single-node-from-map –

+0

Solo proprietà. Ad ogni modo li avevo copiati manualmente, era solo curioso di sapere se c'era un metodo diretto. – Sravan

+1

no non c'è. –

risposta

3

È possibile creare un duplicato con una mappa in Ne04j 2.1 (non sono sicuro della prima)

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

Se si dispone di un vincolo di unicità su una qualsiasi delle proprietà fallirà anche se con il messaggio ...

nodo esiste già con etichetta XX e proprietà "proprietà" = [valore]

È può evitarlo fornendo un nuovo valore per la proprietà con il vincolo di unicità, creando il nuovo nodo e copiando gli altri valori di proprietà non univoci dal nodo originale.

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 
Problemi correlati