dateTime范围查询

时间:2015-06-16 13:20:44

标签: javascript marklogic

在我的ML8数据库中,有一些包含Dtm字段的JSON文档。您可以在下面的“数据:”中看到一个示例。 我在这个字段上有一个标量类型dateTime的元素范围索引,并检查它是否有效我使用下面在'Test:'中看到的查询。结果如预期。

现在,当我尝试查询此内容时,我希望在特定日期之后使用Dtm字段获取所有文档,此查询不返回任何内容。您可以在“查询:”中查看下面的查询。

数据:

"Dtm": "2015-06-25T07:11:10.0Z"

查询:

var date = xs.dateTime("2015-06-01T14:38:09.145231+02:00");
var b    = cts.elementRangeQuery("Dtm", ">", date);
var c    = cts.search(b);
c

测试:

cts.elementValues([xs.QName("Dtm")], null, ['limit=3'], null, 1.0, null);

TestResult中:

2015-06-11T17:43:36
2015-06-11T17:43:37
2015-06-11T17:43:38

2 个答案:

答案 0 :(得分:5)

尝试使用cts.jsonPropertyRangeQuery,并使用fn.subsequence只抓取一页结果,而不是全部。例如:

var date = "2015-06-16T07:11:10.0Z";
var b    = cts.jsonPropertyRangeQuery("Dtm", ">", date);
var c    = fn.subsequence(cts.search(b, ['unfiltered']), 1, 10);

HTH!

答案 1 :(得分:1)

这是实现这一目标的最终代码。

var date = "2015-06-16T07:11:10.0Z";
var b    = cts.jsonPropertyRangeQuery("Dtm", ">", date);
var c    = fn.subsequence(cts.search(b, ['unfiltered']), 1, 10);

感谢@grtjn。