惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
美团技术团队
博客园 - 司徒正美
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
阮一峰的网络日志
阮一峰的网络日志
S
SegmentFault 最新的问题
博客园_首页
雷峰网
雷峰网
V
V2EX
The Cloudflare Blog
博客园 - 三生石上(FineUI控件)
量子位
Last Week in AI
Last Week in AI
人人都是产品经理
人人都是产品经理
爱范儿
爱范儿
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 聂微东
V
Visual Studio Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
Jina AI
Jina AI
月光博客
月光博客
L
LangChain Blog

博客园 - 哥本哈士奇(aspnetx)

dbt+SQLServer构建数据仓库(13):运维 FAQ 篇 dbt+SQLServer构建数据仓库(12):进阶 FAQ 篇 dbt+SQLServer构建数据仓库(11):FAQ 篇 dbt+SQLServer构建数据仓库(10):macro 以及 data vault的应用实例 dbt+SQLServer构建数据仓库(9):用Vibe Coding创建一个DBT UI dbt+SQLServer构建数据仓库(8):Vibe Coding用dbt构建data vault数仓 dbt+SQLServer构建数据仓库(7):进阶扩展 dbt+SQLServer构建数据仓库(6):Jinja与DAG实战 dbt+SQLServer构建数据仓库(5):数据测试 dbt+SQLServer构建数据仓库(4):分层建模实战 dbt+SQLServer构建数据仓库(3):dbt_project.yml配置精讲 dbt+SQLServer构建数据仓库(2):与传统方案对比及迁移决策 dbt+SQLServer构建数据仓库(1):认识dbt与项目工作流程 SQL Server 索引知识汇总 医疗器械行业 Salesforce Territory 完整落地实例 Raw Data Vault vs Business Data Vault Neo4j 多跳查询实战:从社交网络场景理解图遍历 Git 本地版本管理学习笔记 看完《低智商犯罪》,学习Cypher构建知识图谱 LangChain DeepAgents 学习笔记 LangChain Deepagent 版本0.6.1中间件一个bug Neo4j笔记(五):查询的处理流程 微软 SQL Server 版本演进史:从诞生到 SQL Server 2025 提升 Text2SQL 准确率 SQLServer Management Studio(SSMS) 22 Copilot 最佳实践学习笔记 SQLServer RAG笔记4:从服务层到前端交互 SQLServer RAG笔记5:为SQLServer 2025配置Ollama SQL Server RAG 笔记3:SQLServer2025 向量数据库 详解传统RAG、Text2SQL、Graph RAG:适用场景与问题示例汇总 SQL Server RAG 笔记2:图数据库服务层与前端可视化构建
Neo4j 基础教程(二):Cypher CRUD 完全指南
哥本哈士奇(aspnet · 2026-04-26 · via 博客园 - 哥本哈士奇(aspnetx)

Neo4j 基础教程(二):Cypher CRUD 完全指南

环境:macOS + Neo4j Browser,此篇简单介绍Cypher的CRUD操作。


准备工作

确认 Neo4j 正在运行,浏览器打开 http://localhost:7474


基础查询:MATCH

查询所有节点

MATCH (n) RETURN n

按标签查询

// 查找所有 Person 节点
MATCH (p:Person) RETURN p

// 查找特定属性
MATCH (p:Person {name: 'Alice'}) RETURN p

带条件的查询

// WHERE 子句
MATCH (p:Person)
WHERE p.age >= 25
RETURN p.name, p.age

// 多条件
MATCH (p:Person)
WHERE p.age > 25 AND p.name STARTS WITH 'A'
RETURN p

限定返回数量

MATCH (p:Person) RETURN p LIMIT 10

创建:CREATE

创建节点

// 无标签节点
CREATE (n)

// 带属性
CREATE (p:Person {name: 'Charlie', city: 'Beijing'})

// 一次性创建多个节点
CREATE (a:Dev {lang: 'Python'}),
       (b:Dev {lang: 'JavaScript'}),
       (a)-[:WORKS_WITH]->(b)

创建关系

// 假设 Alice 和 Bob 已存在,现在创建关系
MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
CREATE (a)-[:KNOWS {year: 2021}]->(b)

带变量的 CREATE

// 创建并返回节点
CREATE (p:Person {name: 'Diana', role: 'Designer'})
RETURN p

更新:SET

更新节点属性

// 精确匹配后更新
MATCH (p:Person {name: 'Alice'})
SET p.age = 31, p.city = 'Shanghai'
RETURN p

添加额外属性

MATCH (p:Person {name: 'Alice'})
SET p.email = 'alice@example.com'

使用 map 更新

MATCH (p:Person {name: 'Bob'})
SET p += {phone: '13800138000', country: 'China'}

删除:DELETE / REMOVE

删除关系

// 先查再删
MATCH (a:Person)-[r:KNOWS]->(b:Person)
WHERE a.name = 'Alice' AND b.name = 'Bob'
DELETE r

删除节点

// 删除节点(需先删除关联关系)
MATCH (p:Person {name: 'Diana'})
DETACH DELETE p

⚠️ DETACH DELETE 会同时删除所有关系,最安全

移除属性

// 移除某个属性(用 REMOVE)
MATCH (p:Person {name: 'Alice'})
REMOVE p.age

移除标签

MATCH (p:Person)
REMOVE p:Person

MERGE:防重复插入

// 如果节点已存在则不重复创建
MERGE (p:Person {name: 'Alice'})
RETURN p

// 确保关系存在,不重复创建
MATCH (a:Person {name: 'Alice'}), (b:Person {name: 'Bob'})
MERGE (a)-[r:KNOWS]->(b)
RETURN r

💡 MERGE = MATCH + CREATE,是插入数据的最佳实践


进阶查询

路径查询

// 查找 Alice 的二级联系人
MATCH (a:Person {name: 'Alice'})-[:KNOWS]->(friend)-[:KNOWS]->(fof)
RETURN friend.name, fof.name

聚合函数

// 统计每种标签的节点数量
MATCH (n)
RETURN labels(n) AS label, count(n) AS count
ORDER BY count DESC

ORDER BY / SKIP

MATCH (p:Person)
RETURN p.name, p.age
ORDER BY p.age DESC
SKIP 2 LIMIT 5

实战小练习:构建社交关系图

// 清空数据
MATCH (n) DETACH DELETE n;

// 创建人物
CREATE
  (alice:Person {name: 'Alice', job: 'Engineer'}),
  (bob:Person {name: 'Bob', job: 'Designer'}),
  (carol:Person {name: 'Carol', job: 'Manager'}),
  (dave:Person {name: 'Dave', job: 'Engineer'}),
  (eve:Person {name: 'Eve', job: 'Analyst'});

// 创建关系
MATCH (a:Person {name:'Alice'}), (b:Person {name:'Bob'}) CREATE (a)-[:KNOWS]->(b);
MATCH (a:Person {name:'Bob'}), (c:Person {name:'Carol'}) CREATE (a)-[:KNOWS]->(c);
MATCH (a:Person {name:'Alice'}), (d:Person {name:'Dave'}) CREATE (a)-[:KNOWS]->(d);
MATCH (a:Person {name:'Carol'}), (e:Person {name:'Eve'}) CREATE (a)-[:KNOWS]->(e);
MATCH (a:Person {name:'Dave'}), (e:Person {name:'Eve'}) CREATE (a)-[:KNOWS]->(e);

练习题

  1. 查找所有工程师(Engineer)
  2. 查找 Alice 的直接好友
  3. 查找 Bob 通过一层关系能认识谁(二度人脉)
  4. 统计每个人认识多少人

快捷键备忘

操作 快捷键
执行查询 Ctrl+Enter / Cmd+Enter
格式化代码 Shift+Ctrl+F
清空编辑器 Ctrl+Delete

下一步

  • 教程三:数据建模与 Python/JavaScript 连接实战