gpt4 book ai didi

go - 如何在go SDK中使用Couchbase N1QL查询扩展

转载 作者:行者123 更新时间:2023-12-03 03:15:44 25 4
gpt4 key购买 nike

在 golang Couchbase SDK 中,有 N1QL 选择示例,其中包含如下示例:

myQuery := gocb.NewN1qlQuery("SELECT airportname, city, country FROM `travel-sample` " +
"WHERE type='airport' AND city=$1 ")
myParams = append(myParams, []interface{}{"Reno"})
rows, err := bucket.ExecuteN1qlQuery(myQuery, myParams)

当我尝试使用以下内容时,它没有找到任何记录。

query := gocb.NewN1qlQuery("SELECT * FROM `bucket` WHERE META().id LIKE 'TD:$1:%'")

rows, err := r.Bucket.ExecuteN1qlQuery(query, []interface{}{userid})
if err != nil {
return nil, err
}

但这确实有效,并且在 Couchbase 控制台中也有效:

query := gocb.NewN1qlQuery("SELECT * FROM `bucket` WHERE META().id LIKE 'TD:"+userid+":%'")
rows, err := bucket.ExecuteN1qlQuery(query, nil)

我在这里做了什么明显错误的事情吗?

虽然非参数化选项有效,但我想使用参数化选项并将其标记为带有 query.AdHoc(false) 的准备好的语句

最佳答案

gocb.NewN1qlQuery("SELECT * FROM `bucket` WHERE META().id LIKE 'TD:$1:%'")

在上面的代码中,您的查询参数包含在引号内。字符串内的查询参数不会被替换。所以它正在寻找文档 id“TD:$1:”

你应该试试这个

gocb.NewN1qlQuery("SELECT * FROM `bucket` WHERE META().id LIKE 'TD:' || $1 || ':%' ")

或者

   gocb.NewN1qlQuery("SELECT * FROM `bucket` WHERE META().id LIKE $1")
Pass $1 'TD:'+userid+':%'

或者

gocb.NewN1qlQuery("SELECT * FROM `bucket` WHERE META().id LIKE 'TD:"+userid+":%'")

关于go - 如何在go SDK中使用Couchbase N1QL查询扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57803571/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com