Извлечение данных из объекта RethinkDB Count - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть JavaScript запрос RethinkDB, который выглядит следующим образом:

r.db('test')
  .table('trolleys')
  .eqJoin(r.row('currect_location')('_id'),r.table('bufferzone'))
  .zip()
  .filter(r.row('currect_destination')('_id').ne('DEPOT'))
  .group('id')
  .count()

Запрос выдает следующий вывод, который именно то, что я ищу

[
  {
    "group":  "a" ,
    "reduction": 2
  },
  {
    "group":  "b" ,
    "reduction": 1
  }
]

Однако при выполнении того же запроса в Java :

Count countObj = r.db("test")
    .table("trolleys")
    .eqJoin(row -> row.g("currect_location").g("_id"), r.table("bufferzone"))
    .zip()
    .filter(row -> row.g("currect_destination").g("_id").ne("DEPOT"))
    .group("id")
    .count();

Я получаю Count объект обратно в качестве ответа, но как мне извлечь данные, аналогичные тем, которые я получил в случае JavaScript из этого Count объекта в Java?

1 Ответ

0 голосов
/ 16 сентября 2018

Я нашел проблему. Решением было вызвать метод run() в конце запроса. Тип, возвращаемый из запроса, на самом деле также был неправильным в опубликованном вопросе. Вместо объекта Count запрос возвращает список GroupedResults, то есть a List<GroupedResult>. Для полноты полное решение приведено здесь:

import java.util.List;
import com.rethinkdb.RethinkDB;
import com.rethinkdb.model.GroupedResult;
import com.rethinkdb.net.Connection;

public class EmptyTrolleysInBufferzone {

    public static final RethinkDB r = RethinkDB.r;

    public static void main(String[] args) {

        Connection conn = r.connection().hostname("localhost").port(28015).connect();

        List<GroupedResult> response = r.db("test")
            .table("trolleys")
            .eqJoin(row -> row.g("currect_location").g("_id"), r.table("bufferzone"))
            .zip().filter(row -> row.g("currect_destination").g("_id").ne("DEPOT"))
            .group("id")
            .count()
            .run(conn);

        for (GroupedResult g : response) {
            System.out.println(g.group + " = " + g.values.toString());
        }

        conn.close();
    }
}
...