2016-09-28 8 views
2

私はちょうどCouchbaseを学び始めました。私はjava sdkを使用して基本的なクエリを書こうとしていますが、私はそれを書く方法を理解することができません。以下は、クエリです:Javaで基本的なn1qlクエリを書く

SELECT * 
     FROM users_with_orders usr 
       JOIN orders_with_users orders 
        ON KEYS ARRAY s.order_id FOR s IN usr.shipped_order_history END 

は、これは、アレイなしで参加するためです:

LetPath path = select("*,META(usr).id as _ID,META(usr).cas as _CAS).from(bucketName +" usr").join(bucketname +" orders").onKeys("usr.order_id) 

私は、キー配列のために上記のクエリを進める必要がありますどのように?

ありがとう!!!! docs on Querying from the SDKで説明したように

+0

Java SDKで書き込む前に、クエリをcbqシェルまたはQuery Workbenchで動作させることができます。 – geraldss

+0

はい、私はそれを理解し、javaでクエリを書くことができました – Sanjana

答えて

5

には、Java SDKとの単純な文字列のいずれかを使用するか、またはDSLを使用することができます。たとえば:

// query with a simple string 
    System.out.println("Simple string query:"); 
    N1qlQuery airlineQuery = N1qlQuery.simple("SELECT `travel-sample`.* FROM `travel-sample` WHERE name=\"United Airlines\" AND type=\"airline\""); 
    N1qlQueryResult queryResult = bucket.query(airlineQuery); 

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

    //query with a parameter using the DSL 
    System.out.println("Parameterized query using the DSL:"); 
    Statement statement = select(path(i("travel-sample"), "*")).from(i("travel-sample")).where(x("name").eq(x("$airline_param")).and(x("type").eq(s("airline")))); 
    JsonObject placeholderValues = JsonObject.create().put("airline_param", "United Airlines"); 
    N1qlQuery airlineQueryParameterized = N1qlQuery.parameterized(statement, placeholderValues); 
    N1qlQueryResult queryResultParameterized = bucket.query(airlineQueryParameterized); 

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

は(私はなど、輸入品のため、この例のa full gistを掲載)

詳細はドキュメントを参照してください、しかし、あなたは、IDEのコード補完とJavaを許可するDSLを使用することもできますコンパイル時間チェック。インタラクティブなWebアプリケーションを開発するときには、おそらくセキュリティのためにパラメータ化された文を使いたいし、準備された文を(パフォーマンスのために)したいと思うかもしれません。

関連する問題