我正在将我的Main Neo4j Graph(mainDB)的一部分复制到另一个Graph(dupDB)中,同时如何在dupDB中创建一个与mainDB中的节点具有相似属性的节点。我会做
Node main = mainDB.getNodeByID(477); Node dup = dupDB.createNode();
现在我必须手动将main中的每个属性复制到dup中,有没有单行方法可以做到这一点?
06odsfpq1#
您可以在Neo4j 2.1中使用Map创建副本(不确定早期版本)
MATCH (n:Node {name: 'abc'}) WITH n AS map CREATE (copy:Node) SET copy=map RETURN copy
如果你有一个唯一性约束的任何属性,它将失败,虽然与消息.
您可以通过为具有唯一性约束的属性提供新值、创建新节点并从原始节点复制其他非唯一属性值来避免这种情况。
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
atmip9wb2#
我不认为这是一年前。但这可能解决今天的问题。Neo4j shell有一个dump命令: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;
然后,您可以将其输出并将其发送到另一个数据库以创建这些节点,属性等。
vnjpjtjt3#
现在,APOC库中有用于克隆节点的函数,例如参见Neo4j Docs - Clone nodes。一个来自docs的例子:
MATCH (f:Foo{name:'Foo'}),(b:Bar{name:'Bar'}) CALL apoc.refactor.cloneNodes([f,b]) YIELD input, output, error RETURN *
您还可以克隆具有关系的节点,克隆节点时跳过属性等。
3条答案
按热度按时间06odsfpq1#
您可以在Neo4j 2.1中使用Map创建副本(不确定早期版本)
如果你有一个唯一性约束的任何属性,它将失败,虽然与消息.
您可以通过为具有唯一性约束的属性提供新值、创建新节点并从原始节点复制其他非唯一属性值来避免这种情况。
atmip9wb2#
我不认为这是一年前。但这可能解决今天的问题。
Neo4j shell有一个dump命令:http://docs.neo4j.org/chunked/preview/shell-commands.html#_dumping_the_database_or_a_cypher_result_to_cypher_statements
然后,您可以将其输出并将其发送到另一个数据库以创建这些节点,属性等。
vnjpjtjt3#
现在,APOC库中有用于克隆节点的函数,例如参见Neo4j Docs - Clone nodes。
一个来自docs的例子:
您还可以克隆具有关系的节点,克隆节点时跳过属性等。