1 回答

TA貢獻1835條經驗 獲得超7個贊
所有其他響應都有幫助,但直到我提出該建議并cluster.Bucket("mybucket")在連接后添加之后才起作用。
缺少的一件事是輸入“Bucket”名稱。見下文...
除了@vsr 的幫助和回答之外,我剛剛在網站上的文檔中找到了一些關于此的內容。
[https://docs.couchbase.com/go-sdk/current/howtos/n1ql-queries-with-sdk.html](Couchbase Docs)在剛剛入門的Golang例子中,在代碼的注釋中提到'對于服務器版本 6.5 或更高版本,您不需要在此處打開存儲桶',然后下一行將打開一個存儲桶。好資料。
cOpts := gocb.ClusterOptions{
Authenticator: gocb.PasswordAuthenticator{
Username: "user",
Password: "pw",
},
}
cluster, err := gocb.Connect("couchbase://my.dev.server.net/", cOpts)
if err != nil {
panic(err)
}
bucketName := "myBucket"
cluster.Bucket(bucketName)
qOpts := gocb.QueryOptions{}
// create query
queryStr := "SELECT * FROM myBucket WHERE id = '123456789'"
rows, err := cluster.Query(queryStr, &qOpts)
if err != nil {
panic(err)
}
fmt.Printf("rows: %v\n", rows)
for rows.Next() {
var intfc interface{}
err = rows.Row(&intfc)
if err != nil {
panic(err)
}
fmt.Printf("interface result: %v\n", intfc)
}
只需添加該cluster.Bucket("myBucket")行即可完成這項工作。
服務器很舊,是一個缺乏資源的開發服務器,所以我也提高了超時時間,因為我知道它會很慢。cOpts我通過將集群選項(在代碼中命名)調整為以下來增加超時...
cOpts := gocb.ClusterOptions{
Authenticator: gocb.PasswordAuthenticator{
Username: "user",
Password: "pw",
},
TimeoutsConfig: gocb.TimeoutsConfig{
ConnectTimeout: 95 * time.Second,
QueryTimeout: 95 * time.Second,
SearchTimeout: 95 * time.Second,
},
}
這會將超時時間延長到 95 秒,我不需要那么多,但服務器速度足夠慢,以至于在 UI 中需要 40 秒才能完成相同的查詢,所以我只是想確定一下。
我還調整了查詢的超時時間。我不確定它們之間有什么區別,但我在下面進行了調整。
qOpts := gocb.QueryOptions{}
qOpts.Readonly = true
qOpts.ScanWait = 95 * time.Second
qOpts.Timeout = 95 * time.Second
此外,如果您不知道,我是 couchbase 的新手,查詢沒有使用索引字段。我查找了該存儲桶的索引字段并將其添加到查詢中,這樣時間減少了一半以上。
編輯:使用USE KEYSN1QL 中的語句似乎非??欤热魏尾樵兌伎?。我調整了代碼,所以qryStr查詢字符串如下所示......
queryStr := "SELECT * FROM myBucket USE KEYS ['123456789']"
- 1 回答
- 0 關注
- 143 瀏覽
添加回答
舉報