从 Go 使用 Neo4j
如果您是 Go 开发人员,本指南提供了连接到 Neo4j 的选项概述。虽然本指南并不全面,但它将介绍不同的驱动程序并链接到相关资源。
您应该熟悉图数据库概念和属性图模型。您应该已创建了 Neo4j AuraDB 云实例,或在本地安装了 Neo4j。
Neo4j Go 驱动
Neo4j Go 驱动程序由 Neo4j **官方支持**,并使用二进制 bolt 协议连接到数据库。它旨在保持简洁,同时符合 Go 的习惯用法。
模块版本
确保您的应用程序已设置为使用 go 模块(您的应用程序根目录中应该有一个 go.mod
文件)。使用以下命令添加驱动程序:
go get github.com/neo4j/neo4j-go-driver/v5
如果您需要固定特定5.x 版本,可以改为运行以下命令:
go get github.com/neo4j/neo4j-go-driver/v5@<5.x tag>
其中 <5.x tag>
是可用标签之一(例如:v5.3.0
)。
func helloWorld(ctx context.Context, uri, username, password string) (string, error) {
driver, err := neo4j.NewDriverWithContext(uri, neo4j.BasicAuth(username, password, ""))
if err != nil {
return "", err
}
defer driver.Close(ctx)
session := driver.NewSession(ctx, neo4j.SessionConfig{AccessMode: neo4j.AccessModeWrite})
defer session.Close(ctx)
greeting, err := session.ExecuteWrite(ctx, func(transaction neo4j.ManagedTransaction) (any, error) {
result, err := transaction.Run(ctx,
"CREATE (a:Greeting) SET a.message = $message RETURN a.message + ', from node ' + id(a)",
map[string]any{"message": "hello, world"})
if err != nil {
return nil, err
}
if result.Next(ctx) {
return result.Record().Values[0], nil
}
return nil, result.Err()
})
if err != nil {
return "", err
}
return greeting.(string), nil
}
驱动程序配置
从 Neo4j 版本4.0 开始,默认加密设置默认为**关闭**,Neo4j 将不再生成自签名证书。这适用于默认安装、通过 Neo4j 桌面版和 Docker 镜像进行的安装。您可以通过检查 neo4j.conf
中的 dbms.connector.bolt.enabled
密钥来验证服务器的加密级别。
证书类型 | Neo4j 集群 | Neo4j 独立服务器 | 直接连接到集群成员 |
---|---|---|---|
未加密 |
|
|
|
使用完整证书加密 |
|
|
|
使用自签名证书加密 |
|
|
|
|
N/A |
N/A |
在投入生产环境之前,请查看您的SSL 框架设置。如有必要,您还可以使用 Letsencrypt 为 Neo4j 生成证书
名称 |
版本 |
作者 |
neo4j-driver |
5.22.0 |
Neo4j 团队 |
示例项目
Neo4j 示例项目是一个小型的一页网页应用程序,用于 Neo4j 教程中内置的电影数据库。前端页面对于所有驱动程序都是相同的:电影搜索、电影详细信息以及演员和电影的图可视化。每个后端实现都向您展示了如何从每种不同的语言和驱动程序连接到 Neo4j。
您可以在此处了解有关我们跨多种不同语言驱动程序的小型、一致的示例项目的更多信息。您可以找到所有驱动程序的实现,作为单独的 GitHub 存储库,您可以克隆并直接部署这些存储库。