1

我想获取状态值为“未处理”的所有文档。

我的文件看起来像:

{
    "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);

现在,如何获取状态未处理的文档?如何修改监听器?

4

1 回答 1

3

使用 an将JSON 属性与 aAndQuery结合使用。DirectoryQueryValueQuerystatus

final StructuredQueryDefinition query = sqb.and(
  sqb.directory(true, "/test/"),
  sqb.value(sqb.jsonProperty("status"), "unprocessed")
);
于 2018-12-31T15:39:07.353 回答