首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在go SDK中使用Couchbase N1QL查询扩展

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

Stack Overflow用户
提问于 2019-09-05 18:36:11
回答 1查看 224关注 0票数 1

在golang Couchbase SDK中,有N1QL精选示例文档,示例如下:

代码语言:javascript
复制
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)

当我尝试使用以下命令时,它找不到任何记录。

代码语言:javascript
复制
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控制台中也有效:

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

我是不是做错了什么?

当非参数化选项起作用时,我想使用参数化选项,并用query.AdHoc(false)将其标记为预准备语句

EN

回答 1

Stack Overflow用户

发布于 2019-09-05 23:41:36

代码语言:javascript
复制
gocb.NewN1qlQuery("SELECT * FROM `bucket` WHERE META().id LIKE 'TD:$1:%'")

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

你应该试试这个

代码语言:javascript
复制
gocb.NewN1qlQuery("SELECT * FROM `bucket` WHERE META().id LIKE 'TD:' || $1 || ':%' ")

代码语言:javascript
复制
   gocb.NewN1qlQuery("SELECT * FROM `bucket` WHERE META().id LIKE $1")
    Pass $1  'TD:'+userid+':%' 

代码语言:javascript
复制
gocb.NewN1qlQuery("SELECT * FROM `bucket` WHERE META().id LIKE 'TD:"+userid+":%'")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57803571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档