Liking cljdoc? Tell your friends :D

Neo4J Clojure client

Neo4clj is an idiomatic Clojure client, exclusively using Bolt for performance.

Installation

Add the following dependency to project.clj:

Clojars Project

Getting started

(require '[neo4clj.client :as client])

;; Create a connection to the Neo4j server
(def connection
  (client/connect "bolt://localhost:7687" "neo4j" "password"))

;; Create a new node on the connected server and return it
(client/create-node
  connection
  {:ref-id "N"
   :labels [:person]
   :props {:first-name "Thomas"
           :last-name "Anderson"}})

;; Close the connection to the Neo4J server
(client/disconnect connection)

Clojure representations

Neo4clj uses Clojure maps to represent Nodes and Relationships. To learn more please see Clojure Representations

Examples

To learn more about how to use Neo4clj please take a look at our examples

Supported Features

Neo4clj supports the following features via the Bolt Protocol:

Neo4clj also supports the following operations through idiomatic functions:

  • Create, read, update and delete nodes
  • Create, read, update and delete relationships
  • Create and read a complete graph
  • Create and delete indexes

Test utilities

It is possible to write unit tests for Neo4clj executions, using our test utilities.

Installation

Add the following dependency to project.clj under your test profile:

Clojars Project

Usage

Require the test utils in your test namespace:

(:require [neo4clj.test-utils :as test-utils])

Then initialize an in-memory Neo4J database using with-db:

(test-utils/with-db conn {:initial-data ["CREATE (n:TestNode) RETURN n"]}
  ;; Your test code here
  (client/execute! conn "MATCH (n:TestNode) RETURN n")
  )

The symbol conn contains the Neo4J DB connection and can be used in all neo4clj client calls.

The :initial-data key value is a vector of Cypher strings, these Cypher strings are run when the database is created.

Version matrix

Neo4cljClojureneo-java-driverNeo4j Server
1.1.01.11.15.3.05.3.x
1.0.11.11.14.4.94.4.x
1.0.01.11.14.4.94.4.x
1.0.0-ALPHA71.10.34.4.34.4.x
1.0.0-ALPHA61.10.34.2.54.2.x
1.0.0-ALPHA51.10.04.2.04.2.x
1.0.0-ALPHA41.10.04.2.04.2.x
1.0.0-ALPHA31.10.04.2.04.2.x
1.0.0-ALPHA21.10.04.2.04.2.x
1.0.0-ALPHA11.10.04.2.04.2.x
1.0.0-SNAPSHOT1.10.01.7.23.5.x

Acknowledgements

This project has been inspired by the work of two other projects listed below.

Neocons by Michael Klishin (https://github.com/michaelklishin/neocons) neo4j-clj by Christian Betz (https://github.com/gorillalabs/neo4j-clj)

License

Copyright (C) 2021 Claus Engel-Christensen, Jacob Emcken, and the Full Spectrum team.

Licensed under the Eclipse Public License

Can you improve this documentation? These fine people already did:
Claus Engel-Christensen & Jacob Emcken
Edit on GitHub

cljdoc is a website building & hosting documentation for Clojure/Script libraries

× close