Golang neo4j MERGE需要文字地图

时间:2018-02-16 16:37:40

标签: go neo4j

在我的go应用程序中,我正在尝试使用golang-neo4j-bolt-driver执行MERGE查询。

ExecNeoExecPipeline的接口需要一个带接口对象的字符串映射作为参数。执行查询时,我收到一条错误消息,指出需要literal map

  

内部错误(messages.FailureMessage):messages.FailureMessage {元数据:map [string] interface {} {“code”:“Neo.ClientError.Statement.SyntaxError”,“message”:“参数映射不能用于MERGE模式(改为使用文字地图)。

有没有人有一个创建文字地图的例子?

1 个答案:

答案 0 :(得分:0)

感谢大家指点我正确的方向。 这是我的机器上的一段示例代码':

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\nWith values: %s\n", stmt, params)

numResult, _ := results.RowsAffected()
metadata := results.Metadata()
glog.Errorf("[NEO-CLIENT] Graphed %s '%s (%s)', CREATED ROWS: %d\n", metadata["kind"], metadata["name"], metadata["namespace"], numResult)

err = stmt.Close()
if err != nil {
    panic(err)
}

}