marklogic在java中按日期字段搜索

时间:2018-01-29 09:57:52

标签: marklogic marklogic-8 marklogic-9 marklogic-7 marklogic-dhf

我有一个CustomPojo,其中有一个日期字段(testDate)。现在我想根据该日期字段的日期范围搜索此CustomPojo。我试图通过以下方式实现它,但不幸的是它不是过滤数据而是返回所有pojos。请提出任何建议。

*PojoRepository<CustomPojo, Long> customPojoRepo= getDbClient()
            .newPojoRepository(CustomPojo.class, Long.class);
PojoQueryBuilder<CustomPojo> qb = customPojoRepo.getQueryBuilder();
StructuredQueryDefinition sqdef=
             qb.and(qb.range("testDate", PojoQueryBuilder.Operator.GE, startCal.getTime()),
             qb.range("testDate", PojoQueryBuilder.Operator.LE, endCal.getTime()));
PojoPage<CustomPojo> matchingObjs =
customPojoRepo.search(sqdef,
                    start);*

谢谢, 贾根

2 个答案:

答案 0 :(得分:0)

您是否可以发布CustomPojo的定义,以及存储在db中的JSON doc示例。 PojoRepository的定义(如文档所述)适用于简单的CRUD方法,特别是从Pojo到JSON的确切序列(数据映射)未定义。使用查询,您需要知道字段的序列化名称,因为ML对Java不了解。此外,还会键入范围索引,而不定义范围索引,Pojo,JSON和endCal.getTime()无法确定您遇到的最可能的问题。

答案 1 :(得分:0)

我知道这并没有直接回答您的问题,但请注意,在PojoFacadeTest.java中使用TimeTest作为Pojo的日期进行范围查询的工作示例。要支持此bootstrap.xqywhich is run as a prerequisite to unit tests),请创建三个dateTime范围索引:

  • com.marklogic.client.test.TimeTest / calendarTest
  • com.marklogic.client.test.TimeTest / calendarTestCet
  • com.marklogic.client.test.TimeTest / dateTest