【问题标题】:writing a basic n1ql query in java用java编写一个基本的n1ql查询
【发布时间】:2016-09-28 16:41:43
【问题描述】:

我刚刚开始学习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) 

我应该如何进行上述关于键数组的查询?

谢谢!!!!

【问题讨论】:

  • 在使用 Java SDK 编写代码之前,能否让查询在 cbq shell 或 Query Workbench 中运行。
  • 是的,我已经想通了,并且能够在 java 中编写查询

标签: java couchbase n1ql


【解决方案1】:

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);
    }

(我发布了这个例子的a full gist 用于导入等)

有关更多信息,请参阅文档,但您可能希望使用 DSL 来允许 IDE 代码完成和 Java 编译时间检查。在开发交互式 Web 应用程序时,您可能还希望使用参数化语句(出于安全考虑),甚至可能需要准备好的语句(出于性能考虑)。

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 2023-01-11
    • 1970-01-01
    • 2019-05-07
    • 1970-01-01
    • 1970-01-01
    • 2012-02-16
    • 2011-04-11
    • 1970-01-01
    相关资源
    最近更新 更多