从 Go 使用 Neo4j

如果您是 Go 开发人员,本指南提供了连接到 Neo4j 的选项概述。虽然本指南并不全面,但它将介绍不同的驱动程序并链接到相关资源。

您应该熟悉图数据库概念和属性图模型。您应该已创建了 Neo4j AuraDB 云实例,或在本地安装了 Neo4j

适用于 Go 开发人员的 Neo4j

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 密钥来验证服务器的加密级别

表 1. 表格方案用法
证书类型 Neo4j 集群 Neo4j 独立服务器 直接连接到集群成员

未加密

neo4j

neo4j

bolt

使用完整证书加密

neo4j+s

neo4j+s

bolt+s

使用自签名证书加密

neo4j+ssc

neo4j+ssc

bolt+ssc

Neo4j AuraDB

neo4j+s

N/A

N/A

在投入生产环境之前,请查看您的SSL 框架设置。如有必要,您还可以使用 Letsencrypt 为 Neo4j 生成证书

名称

版本

作者

neo4j-driver

5.22.0

Neo4j 团队

文档

API

源代码

示例项目

Neo4j 示例项目是一个小型的一页网页应用程序,用于 Neo4j 教程中内置的电影数据库。前端页面对于所有驱动程序都是相同的:电影搜索、电影详细信息以及演员和电影的图可视化。每个后端实现都向您展示了如何从每种不同的语言和驱动程序连接到 Neo4j。

您可以在此处了解有关我们跨多种不同语言驱动程序的小型、一致的示例项目的更多信息。您可以找到所有驱动程序的实现,作为单独的 GitHub 存储库,您可以克隆并直接部署这些存储库。