2016-05-13 7 views
0

文書IDを指定せずに新しい文書をCou​​chbaseバケットに挿入することはできますか?私はCouchbaseののJava SDKは、ドキュメントを作成し、Couchbaseのは、次のようなGroovyのコードとドキュメントのUUIDを決定している使用したいと思います:いいえ、Couchbaseの文書がキーを持っている必要がIDを指定せずにCouchbase文書を作成

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)); 

答えて

1

、それは、キーインの全体のポイントです結局、価値のあるストア。ただし、キーではなくクエリでドキュメントを取得するなど、キーが何であるか気にしない場合は、ドキュメントを作成するときにuuidまたはその他の一意の値を使用できます。

+0

フィードバックに感謝いたします。明確にするために、私は文書にIDを割り当てるのを避けようとしていませんでした。私はCouchbaseにIDを管理させる方法があるかどうかを確認しようとしていました(ElasticsearchがデフォルトでドキュメントにUUIDを自動的に割り当てる方法と同じように)。 – oyiadom

0

すでに判明として、UUIDを生成する一つのアプローチです。

たとえば、 "foo"接頭辞の後にシーケンス番号が続くなど、より意味のあるIDを生成する場合は、Couchbaseでアトミックカウンタを使用できます。

原子カウンターは、bucket.counter("counterKey", 1, 2)を呼び出すたびにSDKが一意の増分値を保証するために使用するlongを含むドキュメントです。このコードは、カウンタードキュメント "counterKey"の値を取り、それを1ずつ増加させ、インクリメントされた値を返します。カウンタが存在しない場合は、返された値である初期値2で作成されます。

これは自動ではなく、シーケンス/ IDを作成するCouchbaseの方法です。

+0

ありがとう、@サイモン。私はアプリケーションにカウンターを組み込むことができます。 – oyiadom

関連する問題