Goals If you are a Go developer, this guide provides an overview of options for connecting to Neo4j. While this guide is not comprehensive it will introduce the different drivers and link to the relevant resources. Prerequisites You should be… Read more →

Goals
If you are a Go developer, this guide provides an overview of options for connecting to Neo4j. While this guide is not comprehensive it will introduce the different drivers and link to the relevant resources.
Prerequisites
You should be familiar with graph database concepts and the property graph model. You should have installed Neo4j and made yourself familiar with our Cypher Query language.
Intermediate


Neo4j for Go Developers

GO

You can use the official driver for Go (neo4j-go-driver) or connect via Bolt or HTTP with any of our community drivers.

Neo4j Go Driver

The Neo4j Go driver is officially supported by Neo4j and connects to the database using the binary bolt protocol. It aims to be minimal, while being idiomatic to Go. The driver is based on the c-connector Seabolt and has additional build instructions.

go get github.com/neo4j/neo4j-go-driver/neo4j
func helloWorld(uri, username, password string) (string, error) {
	var (
		err      error
		driver   neo4j.Driver
		session  neo4j.Session
		result   neo4j.Result
		greeting interface{}
	)

	driver, err = neo4j.NewDriver(uri, neo4j.BasicAuth(username, password, ""))
	if err != nil {
		return "", err
	}
	defer driver.Close()

	session, err = driver.Session(neo4j.AccessModeWrite)
	if err != nil {
		return "", err
	}
	defer session.Close()

	greeting, err = session.WriteTransaction(func(transaction neo4j.Transaction) (interface{}, error) {
		result, err = transaction.Run(
			"CREATE (a:Greeting) SET a.message = $message RETURN a.message + ', from node ' + id(a)",
			map[string]interface{}{"message": "hello, world"})
		if err != nil {
			return nil, err
		}

		if result.Next() {
			return result.Record().GetByIndex(0), nil
		}

		return nil, result.Err()
	})
	if err != nil {
		return "", err
	}

	return greeting.(string), nil
}

Name

Version

Authors

neo4j-driver

v1.7.1

The Neo4j Team, Ali Ince

Neo4j Online Community

Docs

API

The Example Project

The Neo4j example project is a small, one page webapp for the movies database built into the Neo4j tutorial. The front-end page is the same for all drivers: movie search, movie details, and a graph visualization of actors and movies. Each backend implementation shows you how to connect to Neo4j from each of the different languages and drivers.

You can learn more about our small, consistent example project across many different language drivers here. You will find the implementations for all drivers as individual GitHub repositories, which you can clone and deploy directly.

Neo4j Community Drivers

The drivers below have been thankfully contributed by the Neo4j community. Many of these are fully featured and well maintained. But we don’t take any responsibility for their fitness for use with the most recent versions of Neo4j.

Golang Neo4J Bolt Driver

This implementation attempts to follow the best practices as per the Bolt specification, but also implements compatibility with Golang’s sql.driver interface.

It is recommended that you use the Neo4j Bolt-specific interfaces if possible. The implementation is more efficient and can more closely support the Neo4j Bolt feature set.

Features

  • Neo4j Bolt low-level binary protocol support
  • Message Pipelining for high concurrency
  • Connection Pooling
  • TLS support
  • Compatible with sql.driver

Author

Scott Wilson, John Nadratowski

Source

https://github.com/johnnadratowski/golang-neo4j-bolt-driver

Docs

https://github.com/johnnadratowski/golang-neo4j-bolt-driver/tree/master/README.md

Example Project

https://github.com/neo4j-examples/golang-bolt-movie-example