neo4j 使用Cypher克隆节点和关系

pnwntuvh  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(401)

是否可以在一个Cypher neo4j 2.0查询中克隆任意节点和关系?“Arbitrary”读作“不指定它们的标签和关系类型”。

MATCH (node1:NodeType)-[e]->(n)
CREATE (clone: labels(n)) set clone=n set clone.prop=1 
CREATE (node1)-[e1:type(e)]->(clone) set e1=e set e1.prop=2

在Cypher中是无效的,因此不能简单地从一个节点或关系中获取标签并将其分配给另一个节点或关系,因为标签是按字面意义编译到查询中的。
当然,标签和关系类型对于MATCH和WHERE生成有效的查询计划很重要,但CREATE不是另一种情况吗?

dvtswwa3

dvtswwa31#

克隆部分图表最简单的方法是使用Neo4j shell中的dump命令。dump从您的return子句生成cypher create语句。转储的结果可以应用于图表数据库以创建克隆。

az31mfrm

az31mfrm2#

今天,2022年4月,我相信最好的方法可能是使用APOC procedure
我有一个类似的要求,这对我很有效。

MATCH  (rootA:Root{name:'A'}),
       (rootB:Root{name:'B'})
MATCH path = (rootA)-[:LINK*]->(node)
WITH rootA, rootB, collect(path) as paths
CALL apoc.refactor.cloneSubgraphFromPaths(paths, {
    standinNodes:[[rootA, rootB]]
})
YIELD input, output, error
RETURN input, output, error

相关问题