2016-09-28 3 views
2

방금 ​​Couchbase을 배우기 시작했습니다. java sdk를 사용하여 기본 쿼리를 작성하려고하지만이를 작성하는 방법을 이해할 수 없습니다.자바에서 기본 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) 

어떻게 키 배열에 대해 위의 쿼리를 진행해야 다음 쿼리는?

감사합니다 !!!!

+0

Java SDK에서 쓰기 전에 쿼리를 cbq 쉘 또는 Query Workbench에서 작동시킬 수 있습니까? – geraldss

+0

예, 알아 냈으므로 Java에서 쿼리를 작성할 수있었습니다. – Sanjana

답변

5

docs on Querying from the SDK에 설명 된대로 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); 
    } 

더 많은 정보에 대한 문서를 볼 수 있지만, 당신은 IDE 코드 완성 및 Java를 허용하도록 DSL을 사용할 수 있습니다 (I는 수입 등이 예 a full gist을 게시) 컴파일 시간 검사. 대화 형 웹 응용 프로그램을 개발할 때 보안을 위해 매개 변수화 된 문을 사용하고 성능에 대한 준비된 문을 원할 수도 있습니다.