Thanks everyone for pointing me in the right direction. Here's a piece of sample code that 'works on my machine':
func TestMergeWithLiteralMap(t *testing.T) {
d := bolt.NewDriver()
conn, err := d.OpenNeo("bolt://neo4j:admin@127.0.0.1:7687")
if err != nil {
panic(err)
}
defer conn.Close()
qry := `MATCH (f:Node1 {Name: {f_name}, Group: {f_group} }),
(t:Node2{Name: {t_name}, Group: {t_group} })
WITH f,t
MERGE (t) <- [:NREL] - (f)`
params := map[string]interface{}{"f_name": "apple", "f_group": "public", "t_name": "pear", "t_group": "private"}
stmt, err := conn.PrepareNeo(qry)
if err != nil {
panic(err)
}
results, err := stmt.ExecNeo(params)
if err != nil {
panic(err)
}
glog.Errorf("Executed statement: %s
With values: %s
", stmt, params)
numResult, _ := results.RowsAffected()
metadata := results.Metadata()
glog.Errorf("[NEO-CLIENT] Graphed %s '%s (%s)', CREATED ROWS: %d
", metadata["kind"], metadata["name"], metadata["namespace"], numResult)
err = stmt.Close()
if err != nil {
panic(err)
}
}