在 Neo4j 中,“存关系”主要指的是用 图数据库的方式存储节点(Node)和关系(Relationship)。下面从概念到实操给你一个清晰说明。
Person、Companyname, agesince, weight示例:
(Alice:Person)-[:FRIEND {since:2020}]->(Bob:Person)
CREATE (:Person {name:'Alice', age:30})
CREATE (:Person {name:'Bob'})
MATCH (a:Person {name:'Alice'}), (b:Person {name:'Bob'})
CREATE (a)-[:FRIEND]->(b)
MATCH (a:Person {name:'Alice'}), (b:Person {name:'Bob'})
CREATE (a)-[:FRIEND {since:2020, level:'close'}]->(b)
CREATE
(a:Person {name:'Alice'}),
(b:Person {name:'Bob'}),
(a)-[:FRIEND {since:2020}]->(b)
MATCH (a:Person {name:'Alice'}), (b:Person {name:'Bob'})
MERGE (a)-[:FRIEND]->(b)
MERGE = 有就匹配,没有就创建from neo4j import GraphDatabase
driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j","password"))
with driver.session() as session:
session.run(
"""
MERGE (a:Person {name:$a})
MERGE (b:Person {name:$b})
MERGE (a)-[:FRIEND {since:$since}]->(b)
""",
a="Alice", b="Bob", since=2020
)
User -[:FOLLOW]-> User
User -[:LIKE]-> Post
Entity -[:IS_A]-> Concept
Entity -[:RELATED_TO]-> Entity
Person -[:WORKS_AT]-> Company
Company -[:OWN]-> Company
✅ 关系要有明确语义(不要只用 REL)
✅ 关系方向要稳定(如“谁关注谁”)
✅ 高频属性放节点,临时/上下文属性放关系
✅ 不要“关系套关系”(Neo4j 不支持)
如果你有具体场景(比如:社交、知识图谱、风控、推荐系统),我可以直接帮你设计 节点 + 关系模型。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。