在 Neo4j 中,“图数据”通常指节点(Node)、关系(Relationship)和属性(Property)。下面从概念 → 建模 → 写入方式 → 示例给你一个完整、实用的说明。
| 概念 | 说明 |
|---|---|
| Node(节点) | 实体,如:用户、商品、订单 |
| Label(标签) | 节点的类型,如 User、Product |
| Relationship(关系) | 节点之间的边,如 FOLLOWS、BUYS |
| Property(属性) | 节点或关系的键值对,如 name, age |
示例图:
(:User {name:"Alice"})-[:FOLLOWS]->(:User {name:"Bob"})
UserFOLLOWSFRIEND_WITHCREATE (:User {name:"Alice", age:30})
CREATE (:User {name:"Bob", age:28})
MATCH (a:User {name:"Alice"}), (b:User {name:"Bob"})
CREATE (a)-[:FOLLOWS]->(b)
CREATE
(a:User {name:"Alice"}),
(b:User {name:"Bob"}),
(a)-[:FOLLOWS]->(b)
UNWIND $users AS u
CREATE (:User {name:u.name, age:u.age})
Python 示例:
from neo4j import GraphDatabase
driver = GraphDatabase.driver("bolt://localhost:7687", auth=("neo4j","password"))
users = [{"name":"Alice","age":30},{"name":"Bob","age":28}]
with driver.session() as session:
session.run(
"UNWIND $users AS u CREATE (:User {name:u.name, age:u.age})",
users=users
)
LOAD CSV WITH HEADERS FROM "file:///users.csv" AS row
CREATE (:User {name:row.name, age:toInteger(row.age)})
MATCH (a:User)-[:FOLLOWS]->(b:User)
RETURN a.name, b.name
(Entity)-[:RELATES_TO]->(Entity)
(User)-[:BUYS]->(Product)
(User)-[:SIMILAR]->(User)
(Person)-[:TRANSFER]->(Account)
✅ 给常用查询字段建索引
CREATE INDEX FOR (u:User) ON (u.name)
✅ 关系一定要有类型和方向
✅ 不要过度使用属性,图结构才是核心
✅ 大数据用 UNWIND 或 neo4j-admin import
如果你愿意,可以告诉我:
我可以直接帮你设计图模型 + 写入代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。