在我的go应用程序中,我正在尝试使用golang-neo4j-bolt-driver执行MERGE查询。
ExecNeo
和ExecPipeline
的接口需要一个带接口对象的字符串映射作为参数。执行查询时,我收到一条错误消息,指出需要literal map
:
内部错误(messages.FailureMessage):messages.FailureMessage {元数据:map [string] interface {} {“code”:“Neo.ClientError.Statement.SyntaxError”,“message”:“参数映射不能用于MERGE模式(改为使用文字地图)。
有没有人有一个创建文字地图的例子?
答案 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)
}
}