jjzjj

: bulk Get operation example

coder 2023-06-28 原文

最近发布的 gocb lib(couchbase 的官方 golang 客户端)提供了用于执行批量操作(获取、删除等)的 API。我很想看到这样一个操作的完整示例,唉 - 我的围棋技术很差,而且网上也没有。

我希望看到一个片段,它 (1) 编译,(2) 执行 multi-get,最后 (3) 设法访问从 couchbase 返回的值。

以下是网上存在的少量文档: http://developer.couchbase.com/documentation/server/4.0/sdks/go-beta/bulk-operations.html

以下代码(执行插入)是不够的:我想要 Get(特别是 - 如何查看 get 操作结果的内容)。

myBucket, _ := myCluster.OpenBucket("default", "")

var items []gocb.BulkOp
items = append(items, &gocb.InsertOp{Key: "document_name_1", Value: "Hello World 1"})
items = append(items, &gocb.InsertOp{Key: "document_name_2", Value: "Hello World 2"})

err := bucket.Do(items)

最佳答案

只需将 *InsertOp 值替换为 *GetOp 值,然后读取它们的 Value 字段:

package main

import "fmt"
import "gopkg.in/couchbaselabs/gocb.v1"

func main() {
        getKeys()
}

func getKeys() {
        myCluster, err := gocb.Connect("couchbase://<couchbase-address>")
        if err != nil {
                fmt.Println("cluster error:", err)
        }
        myBucket, err := myCluster.OpenBucket("Test", "") //case sensitive!
        if err != nil {
                fmt.Println("bucket error:", err)
        }

        var items []gocb.BulkOp
        items = append(items, &gocb.GetOp{Key: "document_name_1"})
        items = append(items, &gocb.GetOp{Key: "document_name_2"})

        err = myBucket.Do(items)

        if err != nil {
                fmt.Println("Do error:", err)
                panic(err)
        }

        for _, g := range items {
                //"downcast" the instance back to its concrete type - GetOp
                t := g.(*gocb.GetOp)
                fmt.Println(t)
        }
}

关于: bulk Get operation example,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33068478/

有关: bulk Get operation example的更多相关文章

随机推荐