如何使用xquery在Marklogic中检查文档中的最大值/最小值?

时间:2018-10-22 18:59:25

标签: marklogic

我正在尝试找出如何检查文档中时间戳属性的最大值/最小值。

示例文档将类似于:

uri 1数据:

{
createdTime:2018-10-22 10:04:00
filename: employee.txt
}

uri 2数据:

{
createdTime:2018-10-22 11:04:00
filename: employee.txt
}

我需要做的是查看employee.txt文件的最小创建日期。如何为该方案编写XQuery?

2 个答案:

答案 0 :(得分:1)

如果您能够使createdTime符合xs:dateTime格式(基本上意味着将日期和时间之间的空格替换为您的字符'T'),则可以在createdTime上apply a range inde x情况),只需调整数据即可。

如果是这样,则可以使用诸如cts.mincts.max之类的函数来获取该属性的最小值和最大值。

如果没有,您可以尝试通过获取所有值,将它们排序为字符串,然后首先抓取和最后抓取来进行暴力破解,但这通常不是很明智,因为这样做的规模非常大。

如果您无法更改数据,并且也无法使用暴力破解,则可以考虑使用Template Driven Extraction。但是,这是一个相当高级的主题,可能会使事情变得比必要的复杂。

HTH!

答案 1 :(得分:0)

海报要求一个Xquery。这很简单。

min(doc("file.json")//createdTime)

如果json字段(字符串)的格式如图所示,则无需将其转换为dateTime,因为文本词法排序顺序会对该格式产生相同的顺序。否则,您将需要解析并转换为xs:dateTime