首页 > 解决方案 > 如何使用 xquery 在 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?

标签: marklogic

解决方案


如果您能够通过调整数据使 createdTime 符合格式(这基本上意味着在您的情况下用字符“T”替换日期和时间之间的空格) ,则可以在 createdTime 上应用范围索引。xs:dateTime

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

如果没有,您可以通过获取所有值,将它们排序为字符串,然后首先抓取和最后抓取来尝试蛮力,但这通常不是很明智,因为这非常容易扩展。

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


推荐阅读