【问题标题】:Get binary document from QueryResult Couchbase response从 QueryResult Couchbase 响应中获取二进制文档
【发布时间】:2021-08-06 09:34:49
【问题描述】:

我正在使用 Couchbase 3.2 SDK 来查询 couchbase 服务器。如下所示

QueryResult result = cluster.query(
                    "SELECT *, Meta().id FROM  bucketName USE KEYS ?",
                    queryOptions().parameters(JsonArray.from("pk")).readonly(true));

反应是这样的

[{"id":"pk","bucketName":"<binary (21 b)>"}]

我的文档是一个字节[],我如何从查询响应中获取字节[]。 我试过了

  1. 通过做解析到自定义对象
    result.rowsAs(CustomClass.class)
    
  2. 也试过了
    for (JsonObject row : result.rowsAsObject()) {
                 resposne.put((String) row.get("id"), ((String)row.get("ratingsAndReviewCollection")).getBytes("UTF-8"));
             }
    

但是他们都没有返回我放的同一个文档。

This 线程讨论了这个,但没有给出明确的解决方案。

【问题讨论】:

    标签: java couchbase n1ql couchbase-java-api


    【解决方案1】:
    GetResult s = cluster.bucket("bucketName").defaultCollection().get("pk");
    byte[] doc = s.contentAs(byte[].class);
    

    【讨论】:

    • 我的意思是通过执行 N1QL 查询得到的查询结果。因此上述答案没有回答问题
    • 我必须这样做,因为当我使用异步 java 客户端并执行 `List results = Flux.fromIterable(docsToFetch).flatMap(reactiveCollection::get).collectList().block ();` 我无法将哪个 GetResult 关联到哪个 id。如果我无法将 GetResult 与原始 ID 相关联,我不确定我应该如何处理它。
    【解决方案2】:

    使用 N1QL 是不可能的,因此引用线程中的解决方案和我为所问的特定问题提供的解决方案。

    要将参数与结果配对,请使用反应器发挥创意。以下是 spring-data-couchbase,其中 findById() 返回 Airport。使用 SDK 将 findById() 替换为返回 GetResult 的 get()。

    Flux<Pair<String, Mono<Airport>>> pairFlux = Flux.fromIterable(list).map((airport) -> Pair.of(airport.getId(), airportRepository.findById(airport.getId())));
    List<Pair<String, Mono<Airport>>> airportPairs = pairFlux.collectList().block();
    for (Pair<String, Mono<Airport>> airportPair : airportPairs) {
        System.out.println("id: " + airportPair.getFirst() + " airport: " + airportPair.getSecond().block());
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-05
      • 2021-03-04
      • 2014-03-16
      相关资源
      最近更新 更多