登录
首页 >  Golang >  Go问答

使用Go SDK进行Couchbase N1QL查询扩展

来源:stackoverflow

时间:2024-03-13 13:36:25 444浏览 收藏

从现在开始,努力学习吧!本文《使用Go SDK进行Couchbase N1QL查询扩展》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

在 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 SDK进行Couchbase N1QL查询扩展》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>