Написание базового запроса 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)
Как мне продолжить этот запрос для массива ключей?
Спасибо!!!!
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. При разработке интерактивного веб-приложения вы, вероятно, также захотите использовать параметризованные операторы (для безопасности) и, возможно, даже захотите подготовленные операторы (для производительности).