在不指定 ID 的情况下创建 Couchbase 文档
Create a Couchbase Document without Specifying an ID
是否可以在不指定文档 ID 的情况下将新文档插入 Couchbase 存储桶?我想使用 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 似乎无法为我生成文档 ID。在另一位开发人员的建议下,我使用 UUID.randomUUID()
在我的应用程序中生成文档 ID。到目前为止,这种方法对我来说效果很好。
参考:https://forums.couchbase.com/t/create-a-couchbase-document-without-specifying-an-id/8243/4
如您所知,生成 UUID 是一种方法。
如果您想生成更有意义的 ID,例如 "foo" 前缀后跟序列号,您可以使用 Couchbase 中的原子计数器。
原子计数器是一个包含 long 的文档,SDK 依靠它来保证每次调用 bucket.counter("counterKey", 1, 2)
时的唯一递增值。此代码将采用计数器文档 "counterKey" 的值,将其自动递增 1,并 return 递增的值。如果计数器不存在,则使用初始值 2 创建它,即值 returned.
这不是自动的,而是 Couchbase 创建序列/ID 的方式。
是否可以在不指定文档 ID 的情况下将新文档插入 Couchbase 存储桶?我想使用 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 似乎无法为我生成文档 ID。在另一位开发人员的建议下,我使用 UUID.randomUUID()
在我的应用程序中生成文档 ID。到目前为止,这种方法对我来说效果很好。
参考:https://forums.couchbase.com/t/create-a-couchbase-document-without-specifying-an-id/8243/4
如您所知,生成 UUID 是一种方法。
如果您想生成更有意义的 ID,例如 "foo" 前缀后跟序列号,您可以使用 Couchbase 中的原子计数器。
原子计数器是一个包含 long 的文档,SDK 依靠它来保证每次调用 bucket.counter("counterKey", 1, 2)
时的唯一递增值。此代码将采用计数器文档 "counterKey" 的值,将其自动递增 1,并 return 递增的值。如果计数器不存在,则使用初始值 2 创建它,即值 returned.
这不是自动的,而是 Couchbase 创建序列/ID 的方式。