如何用Cypher在Neo4j中创建带节点标识的多边图?

解决方案
当然可以仅用Cypher完成这个需求,且完全保留节点标识。你当前的代码会重复创建节点(每条CREATE语句都会生成新节点),可以通过先创建所有节点并绑定标识变量,再批量创建关系的方式优化:
// 创建所有节点并绑定标识变量 CREATE (v1:D), (v2:C), (v3:A), (v4:B) // 批量创建所有关系 CREATE (v1)-[]->(v2), (v1)-[]->(v3), (v1)-[]->(v4), (v2)-[]->(v1), (v2)-[]->(v3), (v3)-[]->(v1), (v3)-[]->(v2), (v4)-[]->(v1)
补充说明
- 单条
CREATE语句创建所有节点并绑定v1至v4的变量标识,确保每个节点仅创建一次 - 后续批量定义关系时直接复用这些变量,完全符合你需要的节点标识要求
- 若需避免重复创建同标签节点(如数据库中已有同标签节点),可将节点创建的
CREATE替换为MERGE,仅创建不存在的节点:
// 用MERGE避免重复创建同标签节点 MERGE (v1:D) MERGE (v2:C) MERGE (v3:A) MERGE (v4:B) // 批量创建关系 CREATE (v1)-[]->(v2), (v1)-[]->(v3), (v1)-[]->(v4), (v2)-[]->(v1), (v2)-[]->(v3), (v3)-[]->(v1), (v3)-[]->(v2), (v4)-[]->(v1)
该方案适配Neo4j 5.3.0版本,无需依赖CSV导入。
内容的提问来源于stack exchange,提问作者cpchung
相关产品推荐
相关产品推荐

