我正在将Main Neo4j Graph(mainDB)的一部分复制到另一个Graph(dupDB)中,同时这样做我如何在dupDB中创建一个与mainDB具有相似属性的Node。
我愿意
Node main = mainDB.getNodeByID(477);
Node dup = dupDB.createNode();
现在我必须手动将main中的每个属性复制到dup,是否有任何单行方法来执行此操作?
答案 0 :(得分:4)
您可以在Ne04j 2.1中创建带有地图的副本(之前不确定)
match (n:Node {name: 'abc'})
with n as map
create (copy:Node)
set copy=map return copy
如果您对任何属性有唯一性限制,它将失败但消息...
节点已存在,标签为XX,属性为“property”= [value]
您可以通过为属性提供具有唯一性约束的新值来避免这种情况,创建新节点并从原始节点复制其他非唯一属性值。
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
答案 1 :(得分:3)
我认为这不存在于一年前。然而,这可能解决了今天的问题。
Neo4j shell有一个转储命令:http://docs.neo4j.org/chunked/preview/shell-commands.html#_dumping_the_database_or_a_cypher_result_to_cypher_statements
dump START n=node({self}) MATCH (n)-[r]-(m) return n,r,m;
然后您可以获取此输出并将其发送到另一个数据库以创建这些节点,属性和所有。