我正在将Main Neo4j Graph(mainDB)的一部分复制到另一个Graph(dupDB)中,同时这样做我如何在dupDB中创建一个与mainDB具有相似属性的Node.
我会做
Node main = mainDB.getNodeByID(477);
Node dup = dupDB.createNode();
Run Code Online (Sandbox Code Playgroud)
现在我必须手动将main中的每个属性复制到dup,是否有任何单行方法来执行此操作?
您可以在Neo4j 2.1中创建带有地图的副本(不确定之前的版本)
MATCH (n:Node {name: 'abc'})
WITH n AS map
CREATE (copy:Node)
SET copy=map
RETURN copy
Run Code Online (Sandbox Code Playgroud)
如果您对任何属性都具有唯一性约束,则将出现以下消息,但它将失败:
节点已经存在,标签为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
Run Code Online (Sandbox Code Playgroud)
小智 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;
Run Code Online (Sandbox Code Playgroud)
然后,您可以获取其输出并将其发送到另一个数据库以创建这些节点、属性等。
| 归档时间: |
|
| 查看次数: |
5696 次 |
| 最近记录: |