Neo4j图数据库
Cypher语法速查
-- Node: (variable:Label {property: value})
-- Relationship: -[:TYPE {property}]->
-- Pattern: (n)-[:KNOWS]->(m)
-- CREATE nodes and relationships
CREATE (alice:Person {name: 'Alice', age: 30})
CREATE (bob:Person {name: 'Bob', age: 25})
CREATE (alice)-[:KNOWS {since: 2020}]->(bob)
-- MERGE (create if not exists)
MERGE (p:Person {email: 'alice@example.com'})
ON CREATE SET p.created = timestamp()
ON MATCH SET p.lastSeen = timestamp()
-- MATCH with pattern
MATCH (alice:Person {name: 'Alice'})-[:KNOWS]->(friend)
RETURN friend.name, friend.age
-- Multi-hop path
MATCH (a:Person)-[:KNOWS*1..3]->(b:Person)
WHERE a.name = 'Alice'
RETURN DISTINCT b.name
-- Shortest path
MATCH path = shortestPath(
(a:Person {name:'Alice'})-[:KNOWS*]-(b:Person {name:'Charlie'})
)
RETURN length(path), nodes(path)
-- Aggregation
MATCH (p:Person)-[:BOUGHT]->(product)
RETURN product.name, count(*) AS buyers, sum(product.price) AS revenue
ORDER BY revenue DESC LIMIT 10
图数据库使用场景
| 使用场景 | 图数据库优势 |
|---|---|
| 社交网络 | 好友的好友查询每跳O(1) |
| 推荐引擎 | 高效遍历共同兴趣 |
| 欺诈检测 | 发现关联欺诈网络 |
| 知识图谱 | 语义关系 |
| 供应链 | 复杂依赖追踪 |