1

私はCouchbaseの初心者ユーザーです。以下のようにドキュメントをデフォルトのバケットに挿入しようとしています。jsonドキュメントをバケットに挿入する方法として、以下の2つを見つけました。 1) JsonDocumentとupsertを用意してバケットに挿入

    StringBuilder strBuilder = new StringBuilder();
    strBuilder.append("{'phone':{'y':{'phonePropertyList':{'dskFlag':'false','serialId':1000,'inputTray':{'LIST': {'e':[{'inTray':{'id':'1','name':'BypassTray','amount': {'unit':'sheets','state':'empty','typical':'0','capacity':'100'}");
    String LDATA = strBuilder.toString();   
    Cluster cluster = CouchbaseCluster.create("localhost");
Bucket bucket = cluster.openBucket("default");
JsonObject deviceinfoObj = JsonObject.create().put("phoneinfo", LDATA); 
bucket.upsert(JsonDocument.create("phone", deviceinfoObj));

2) または、SQL String query = "upsert into default(KEY, VALUE) values(LDATA)" のような直接クエリを使用して

上記のクエリを noram sql ステートメントのように実行する方法を見つけることができません。例: ステートメント st = connection.createStatement(); ResultSet rs = st.executeQuery(クエリ);

N1QLQuery を使用して json ドキュメントを Couchbase バケットに挿入する方法。

ドキュメントを取得する 2 つの方法を見つけました。

i) document Id bucket.get("phone").content().get("phoneinfo") を使用してドキュメントを直接取得する

ii) N!QueryResultSet を使用してドキュメントを取得する N1qlQueryResult result = bucket.query(N1qlQuery.simple("select * from default;"));

            for (N1qlQueryRow row : result) { 
           System.out.println(row);
        }

Couchbase のバケットとの間でドキュメントを挿入および取得するためのさまざまなアプローチに混乱しました。最初のアプローチを使用してドキュメントを挿入する場合は、jsondocument 全体としてキーと値を持つ JsonObject を準備する必要があります。

したがって、2 番目のアプローチを使用してドキュメントを挿入する方がよいと思います。そのため、N1QLResultSet(2 番目のアプローチ) を使用してドキュメントを取得できるようになります。しかし、最初のアプローチを使用して、バケット内のドキュメントの数を取得する必要があり、それからすべてのドキュメントをループすることができます

クエリ: 1) ドキュメントから選択的にネストされたノードを取得する方法 2) json ドキュメントでは、ノード ant ごとにキーと値を分割し、JSONObject に入れて JSONDocument を準備する必要がありますか? 3) バケットが高速検索を行うためのビューを作成する方法は?

4

1 に答える 1

1

単純な Java pojo を作成し、それを @Document として定義しないでください。次に CrudRepo を使用して、couchbase からドキュメントを保存および取得します。

このサンプルが役立つかもしれません: https://github.com/maverickmicky/spring-couchbase-cache

于 2016-07-01T16:25:33.270 に答える