返回顶部
N

Neo4jNeo4j查询

Write Cypher queries with proper patterns for merging, traversal, and performance.

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.0
安全检测
已通过
1,025
下载量
免费
免费
2
收藏
概述
安装方式
版本历史

Neo4j

MERGE 陷阱

  • - MERGE 匹配的是完整模式——如果关系缺失,MERGE (a)-[:KNOWS]->(b) 会创建重复项
  • 安全更新:先分别合并节点,再合并关系
  • 使用 ON CREATE SET 和 ON MATCH SET 处理条件属性——没有这些,匹配时不会更新任何内容
  • 简单节点更新:MERGE (n:User {id: $id}),配合 id 的唯一约束

索引

  • - 属性无索引 = 全标签扫描——始终为 WHERE 中使用的属性创建索引
  • 唯一约束自动创建索引——适用时优先使用约束而非普通索引
  • 生产环境前使用 EXPLAIN 检查执行计划——查找没有谓词下推的 NodeByLabelScan
  • 文本搜索需要全文索引:CREATE FULLTEXT INDEX FOR (n:Post) ON EACH [n.title, n.body]

可变长度路径

  • - 无界 [] 在连通图中会爆炸——始终设置上界 [1..5]
  • [0..] 包含起始节点——通常非预期,从 [1..] 开始
  • shortestPath() 只返回一条路径——使用 allShortestPaths() 获取所有等长最短路径
  • 路径内过滤代价高昂:[r:KNOWS* WHERE r.active] 先扫描再过滤——考虑修改数据模型

笛卡尔积

  • - 两个不连通的模式相乘:MATCH (a:User), (b:Product) 返回行数 × 行数
  • 连接模式或用 WITH 拆分——无意的笛卡尔积会严重影响性能
  • 两个模式中使用相同变量 = 隐式连接,不会产生笛卡尔积
  • PROFILE 查询会在发生时显示 CartesianProduct 操作符

WITH 作用域重置

  • - 只有 WITH 中的变量会传递——MATCH (a)--(b) WITH a 会丢失 b
  • 聚合强制使用 WITH:MATCH (u:User) WITH u.country AS c, count(*) AS n
  • 常见错误:聚合后过滤需要第二个 WITH
  • 分页:WITH n ORDER BY n.created SKIP 10 LIMIT 10

NULL 传播

  • - OPTIONAL MATCH 对缺失模式返回 NULL——NULL 会在表达式中传播
  • OPTIONAL MATCH 后的 WHERE 会过滤掉 NULL——使用 COALESCE() 保留行
  • count(NULL) 返回 0——实用:OPTIONAL MATCH (u)-[:REVIEWED]->(p) RETURN count(p)
  • 对 NULL 访问属性不会报错,返回 NULL——静默数据丢失

方向

  • - 无箭头时查询忽略方向:(a)-[:KNOWS]-(b) 双向匹配
  • 创建需要方向——必须选择一个,不能创建无向关系
  • 方向错误 = 空结果——如果关系是 (a)-[:OWNS]->(b),查询 (b)-[:OWNS]->(a) 找不到任何内容

批量操作

  • - 单事务中大量创建会耗尽堆内存——使用 CALL {} IN TRANSACTIONS OF 1000 ROWS
  • UNWIND $list AS item CREATE (n:Node {id: item.id}) 用于批量插入
  • apoc.periodic.iterate() 用于带进度的复杂批量逻辑
  • 批量删除:循环中执行 MATCH (n:Old) WITH n LIMIT 10000 DETACH DELETE n

参数注入

  • - 始终使用参数 $param 而非字符串拼接——防止 Cypher 注入
  • 参数还能启用查询计划缓存——字面值每次都会重新编译
  • 以映射形式传递:驱动中使用 {param: value},浏览器中使用 :param {param: value}
  • IN 子句使用列表参数:WHERE n.id IN $ids

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 neo4j-1776420092 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 neo4j-1776420092 技能

通过命令行安装

skillhub install neo4j-1776420092

下载

⬇ 下载 Neo4j v1.0.0(免费)

文件大小: 2.28 KB | 发布时间: 2026-4-17 18:09

v1.0.0 最新 2026-4-17 18:09
Initial release

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部