Groovy 创建Couchbase文档而不指定ID

Groovy 创建Couchbase文档而不指定ID,groovy,couchbase,Groovy,Couchbase,是否可以在不指定文档ID的情况下将新文档插入Couchbase bucket?我想使用Couchbase的Java SDK创建一个文档,并让Couchbase使用如下类似的Groovy代码确定文档的UUID: import com.couchbase.client.java.CouchbaseCluster import com.couchbase.client.java.Cluster import com.couchbase.client.java.Bucket import com.cou

是否可以在不指定文档ID的情况下将新文档插入Couchbase bucket?我想使用Couchbase的Java SDK创建一个文档,并让Couchbase使用如下类似的Groovy代码确定文档的UUID:

import com.couchbase.client.java.CouchbaseCluster
import com.couchbase.client.java.Cluster
import com.couchbase.client.java.Bucket
import com.couchbase.client.java.document.JsonDocument

// Connect to localhost
CouchbaseCluster myCluster = CouchbaseCluster.create()

// Connect to a specific bucket
Bucket myBucket = myCluster.openBucket("default")

// Build the document
JsonObject person = JsonObject.empty()
    .put("firstname", "Stephen")
    .put("lastname", "Curry")
    .put("twitterHandle", "@StephenCurry30")
    .put("title", "First Unanimous NBA MVP)

// Create the document
JsonDocument stored = myBucket.upsert(JsonDocument.create(person));

不,Couchbase文档必须有一个键,这毕竟是键值存储的全部要点。但是,如果您不关心密钥是什么,例如,因为您通过查询而不是通过密钥检索文档,那么您可以在创建文档时使用uuid或任何其他唯一值。

不,Couchbase文档必须有密钥,这毕竟是键值存储的全部要点。但是,如果您不关心密钥是什么,例如,因为您通过查询而不是通过密钥检索文档,那么在创建文档时,您可以使用uuid或任何其他唯一值。

似乎无法让Couchbase为我生成文档ID。根据另一位开发人员的建议,我正在使用
UUID.randomUUID()
在我的应用程序中生成文档ID。到目前为止,这种方法对我很有效


参考资料:

似乎没有办法让Couchbase为我生成文档ID。根据另一位开发人员的建议,我正在使用
UUID.randomUUID()
在我的应用程序中生成文档ID。到目前为止,这种方法对我很有效


参考资料:

正如您已经发现的,生成UUID是一种方法

如果您想生成更有意义的ID,例如“foo”前缀后跟序列号,那么可以使用Couchbase中的原子计数器

原子计数器是一个包含长字符串的文档,SDK依赖它来保证每次调用
bucket.counter(“counterKey”,1,2)
时都有一个唯一的递增值。此代码将获取计数器文档“counterKey”的值,以原子方式将其递增1,然后返回递增的值。如果计数器不存在,则使用返回的初始值2创建计数器


这不是自动的,而是一种创建序列/ID的Couchbase方法。

正如您已经发现的,生成UUID是一种方法

如果您想生成更有意义的ID,例如“foo”前缀后跟序列号,那么可以使用Couchbase中的原子计数器

原子计数器是一个包含长字符串的文档,SDK依赖它来保证每次调用
bucket.counter(“counterKey”,1,2)
时都有一个唯一的递增值。此代码将获取计数器文档“counterKey”的值,以原子方式将其递增1,然后返回递增的值。如果计数器不存在,则使用返回的初始值2创建计数器


这不是自动的,而是一种创建序列/ID的Couchbase方法。

感谢您的反馈。为了澄清这一点,我并没有试图避免为文档分配ID。我只是想看看是否有办法让Couchbase为我管理ID(类似于Elasticsearch在默认情况下自动为文档分配UUID)。谢谢您的反馈。为了澄清这一点,我并没有试图避免为文档分配ID。我只是想看看是否有办法让Couchbase为我管理ID(类似于Elasticsearch在默认情况下自动为文档分配UUID)。我可以在我的申请中加入计数器。谢谢你,@Simon。我可以将计数器合并到我的应用程序中。