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)
推荐引擎高效遍历共同兴趣
欺诈检测发现关联欺诈网络
知识图谱语义关系
供应链复杂依赖追踪