用java编写基本n1ql查询

用java编写基本n1ql查询,java,couchbase,n1ql,Java,Couchbase,N1ql,我刚刚开始学习Couchbase。我正在尝试使用JavaSDK编写一个基本查询,但我无法理解如何编写它。以下是查询: 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 这是用于无阵列连接的:

我刚刚开始学习
Couchbase
。我正在尝试使用JavaSDK编写一个基本查询,但我无法理解如何编写它。以下是查询:

 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) 
我应该如何继续对数组上的键执行上述查询

谢谢

如中所述,您可以在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编译时检查。在开发交互式web应用程序时,您可能还需要使用参数化语句(出于安全考虑),甚至可能需要准备好的语句(出于性能考虑)。

在使用Java SDK编写查询之前,您能否在cbq shell或query Workbench中运行查询。是的,我已经解决了这个问题,并且能够使用Java编写查询