A versão mais recente de nosso Java SDK (2.3.3 no momento da redação deste artigo) introduz uma nova classe: RawQueryExecutor. Ele lhe dá o resultado direto de um N1QL ou consulta FTS como um JSON String ou JsonObject, exatamente como se você estivesse usando a API REST diretamente. A resposta não é agrupada em linhas. Dessa forma, você pode passar o resultado do método diretamente para o seu cliente. Não há necessidade de mapeamento adicional ou algo do gênero.
Isso é particularmente útil para consultas N1QL, pois permite que você consulte exatamente o que precisa por meio da cláusula SELECT. É muito eficiente quando combinado com os índices de cobertura corretos.
Aqui está o exemplo de código assíncrono:
|
1 2 3 |
AsyncRawQueryExecutor asyncRawQueryExecutor= new AsyncRawQueryExecutor("default", "", bucket.core()); Observable<String> result = asyncRawQueryExecutor.n1qlToRawJson(N1qlQuery.simple("Select name, abv, ibu, style FROM `beer-sample` WHERE ibu IS NOT MISSING ORDER BY ibu LIMIT 10 OFFSET 10")); |
e o síncrono:
|
1 2 3 |
RawQueryExecutor rawQueryExecutor = new RawQueryExecutor("default", "", bucket.core(), bucket.environment()); String jsonString = rawQueryExecutor.n1qlToRawJson(N1qlQuery.simple("Select name, abv, ibu, style FROM `beer-sample` WHERE ibu IS NOT MISSING ORDER BY ibu LIMIT 10 OFFSET 10")); |
Gostaria muito de saber se você acha isso útil e se deseja usá-lo também para operações mais simples. Diga-nos o que você acha!