Как получить документ на основе значения конкретного столбца с помощью QueryBatcher? - PullRequest
0 голосов
/ 31 декабря 2018

Я хочу получить все документы, для которых значение статуса «необработано».

Мои документы выглядят так:

{
    "EMPID": "102", 
    "Fname": "FName2", 
    "Lname": "LastName2", 
    "DOB": "02012001", 
    "age": "19", 
    "Gender": "F", 
    "Pay": "21", 
    "status": "unprocessed"
}

URI этих документов выглядит как "/ test/ 102 / FName2 / "

Я могу получить все документы из БД, используя следующий код:

QueryManager queryManager=client.newQueryManager();
StructuredQueryBuilder sqb = queryManager.newStructuredQueryBuilder();
StructuredQueryDefinition query = sqb.directory(true, "/test/");
DataMovementManager dmm = client.newDataMovementManager();
QueryBatcher batcher = dmm.newQueryBatcher(query);
batcher.onUrisReady(
    new ExportListener()
        .onDocumentReady(doc-> {
            String uriParts[] = doc.getUri().split("/");
            try {
                Files.write(
                    Paths.get(DATA_DIR, "output", 
                              uriParts[uriParts.length - 1]), 
                    doc.getContent(new StringHandle()).toBuffer());

            } catch (Exception e) {
                e.printStackTrace();
            }
        }))
   .onQueryFailure( exception -> exception.printStackTrace() );

dmm.startJob(batcher);

Теперь, как я могу получить документы, статус которых не обработан?Как я могу изменить слушателей?

1 Ответ

0 голосов
/ 31 декабря 2018

Используйте AndQuery для объединения DirectoryQuery с ValueQuery для свойства status JSON.

final StructuredQueryDefinition query = sqb.and(
  sqb.directory(true, "/test/"),
  sqb.value(sqb.jsonProperty("status"), "unprocessed")
);
...