最近发布的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-operation结果的内容)。
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)
答案 0 :(得分:1)
只需将*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)
}
}
答案 1 :(得分:1)
这是一个有效的版本,但我认为它非常冗长
PasswordBox