написание базового запроса n1ql в java

Я только начал изучать Couchbase. Я пытаюсь написать базовый запрос, используя java sdk, но я не могу понять, как его написать. Ниже приведен запрос:

 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) 

Как мне выполнить приведенный выше запрос для массива ключей?

Спасибо!!!!


person Sanjana    schedule 28.09.2016    source источник
comment
Можете ли вы заставить запрос работать в оболочке cbq или Query Workbench, прежде чем писать в Java SDK.   -  person geraldss    schedule 28.09.2016
comment
Да, я разобрался и смог написать запрос на java   -  person Sanjana    schedule 29.09.2016


Ответы (1)


Как описано в документах по запросам из 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);
    }

(Я опубликовал полное описание этого примера для импорта и т. д.)

См. документы для получения дополнительной информации, но вы можете использовать DSL, чтобы разрешить завершение кода IDE и проверку времени компиляции Java. При разработке интерактивного веб-приложения вы, вероятно, также захотите использовать параметризованные операторы (для безопасности) и даже готовые операторы (для производительности).

person Matt Ingenthron    schedule 28.09.2016