用途:编写连接 Neo4j 的 Go 代码,搭建 neo4j.NewDriver()、ExecuteQuery() 及会话/事务模式,排查连接错误、结果迭代、类型断言与因果一致性问题。不适用于编写或优化 Cypher(见 neo4j-cypher-skill)以及 v5→v6 迁移(见 neo4j-migration-skill)。
安装:go get github.com/neo4j/neo4j-go-driver/v6,导入 github.com/neo4j/neo4j-go-driver/v6/neo4j。v6 中 NewDriverWithContext 改名为 NewDriver,DriverWithContext 改为 Driver。
主要能力:驱动应每应用创建一个,协程安全、带连接池,启动时 VerifyConnectivity 并 defer driver.Close(ctx)。API 选择:ExecuteQuery 为默认推荐,自动管理会话、事务、重试与书签;session.ExecuteRead/Write 适合大结果集流式读取;session.BeginTransaction 适合跨函数或需外部协调的事务;session.Run 用于 CALL IN TRANSACTIONS 等自管事务。支持 ExecuteQueryWithDatabase、ExecuteQueryWithReadersRouting、ExecuteQueryWithImpersonatedUser 等选项。
用法要点:始终用 map[string]any 参数,禁止拼接用户输入;始终指定 DatabaseName;生产查询用 context.WithTimeout;读取用 ExecuteRead 路由到副本;惰性循环后检查 res.Err();类型断言前检查 ok 或使用 neo4j.GetRecordValue[T];托管事务回调内不要有副作用。v6 提供 GetRecordValue、CollectTWithContext、SingleTWithContext、GetProperty 等泛型助手,以及 v6.2.0+ 的结构体参数与 UUID、v6.3.0+ 的结果映射预览。
限制:显式事务不自动重试;CALL IN TRANSACTIONS 在托管事务中会失败;空间距离仅同 SRID 可比;部分特性为预览版。更多连接池、书签与仓库模式见按需加载的 references 文档。