如何使用golang SDK在不检索完整内容的情况下检查couchbase文档是否存在?

如何使用golang SDK在不检索完整内容的情况下检查couchbase文档是否存在?,go,couchbase,gocb,Go,Couchbase,Gocb,在我的代码中,我想做或不做一些操作,这取决于给定密钥存在的文档。但无法避免检索所有文档内容的额外网络开销 现在我正在使用 cas, err := bucket.Get(key, &value) 并查找err==gocb.ErrKeyNotFound以确定文档遗漏的情况 是否有更有效的方法?您可以使用并检查字段是否存在 示例来自: 编辑:添加go示例 您可以使用子文档API检查文档是否存在,如下所示: frag, err := bucket.LookupIn("document-key"

在我的代码中,我想做或不做一些操作,这取决于给定密钥存在的文档。但无法避免检索所有文档内容的额外网络开销

现在我正在使用

cas, err := bucket.Get(key, &value)
并查找err==gocb.ErrKeyNotFound以确定文档遗漏的情况

是否有更有效的方法?

您可以使用并检查字段是否存在

示例来自:

编辑:添加go示例

您可以使用子文档API检查文档是否存在,如下所示:

frag, err := bucket.LookupIn("document-key").
    Exists("any-path").Execute()

if err != nil && err == gocb.ErrKeyNotFound {
    fmt.Printf("Key does not exist\n")
} else {
    if frag.Exists("any-path") {
        fmt.Printf("Path exists\n")
    } else {
        fmt.Printf("Path does not exist\n")
    }
}
您可以使用和检查字段的存在

示例来自:

编辑:添加go示例

您可以使用子文档API检查文档是否存在,如下所示:

frag, err := bucket.LookupIn("document-key").
    Exists("any-path").Execute()

if err != nil && err == gocb.ErrKeyNotFound {
    fmt.Printf("Key does not exist\n")
} else {
    if frag.Exists("any-path") {
        fmt.Printf("Path exists\n")
    } else {
        fmt.Printf("Path does not exist\n")
    }
}

在我的例子中,文档可以没有字段,也可以有一些字段。实际上这是一张地图,我不能确定那个特定的领域是什么exists@mind_religion,请参阅我的编辑。在您的情况下,仍然可以使用子文档API。也许一个功能请求是为了向gocb.Bucket.添加一些内容,但如果这里发生了cb的真正错误,我们该如何处理呢?在我的例子中,文档可以没有字段,或者有一些字段。实际上这是一张地图,我不能确定那个特定的领域是什么exists@mind_religion,请参阅我的编辑。在您的情况下,仍然可以使用子文档API。也许一个功能请求是为了向gocb.Bucket.添加一些东西,但是如果cb的真正错误发生在这里,我们该如何处理呢?