let () = Lwt_main.run begin
let open Lwt.Syntax in
let open Neo4j_bolt.Bolt in
(* Connect using environment variables *)
let* conn = connect () in
match conn with
| Error e -> print_endline (error_to_string e); Lwt.return ()
| Ok c ->
Printf.printf "Connected: %s\n" (connection_info c);
(* Run query *)
let* res = query c ~cypher:"MATCH (n) RETURN count(n) as total" () in
let* () = close c in
(match res with
| Ok j -> print_endline (Yojson.Safe.to_string j)
| Error e -> print_endline (error_to_string e));
Lwt.return ()
end
Connection Schemes
Scheme
Description
Use Case
bolt://
Plain TCP
Local development
bolt+s://
TLS with cert verification
Production (Neo4j Aura, etc.)
bolts://
Alias for bolt+s://
Same as above
bolt+ssc://
TLS without cert verification
Self-signed certificates
URI-based Connection
let* conn = Neo4j_bolt.Bolt.connect_uri
~uri:"bolt+s://neo4j.example.com:7687"
~username:"neo4j"
~password:"secret"
() in
let* result = Neo4j_bolt.Bolt.count_nodes conn ~label:"Person" in
match result with
| Ok count -> Printf.printf "Found %d Person nodes\n" count
| Error e -> print_endline (Neo4j_bolt.Bolt.error_to_string e)
Parameterized Query
let params = `Assoc [("name", `String "Alice")] in
let* result = Neo4j_bolt.Bolt.query conn
~cypher:"MATCH (p:Person {name: $name}) RETURN p"
~params
() in