MarkLogic中如何基于timestamp元素获取集合内的最新文档
获取MarkLogic集合中timestamp最新的单份文档
嘿,刚好我对MarkLogic的XQuery熟得很,这问题不难解决!你的原语句已经把文档按timestamp降序排好了,但它会返回所有文档的结果——咱们只需要把范围缩小到排序后的第一个文档就行,有两种简单的实现方式:
方法一:用limit 1直接限制结果数量
MarkLogic的FLWOR表达式支持limit子句,直接加在排序后面就能只取第一条结果:
for $doc in fn:collection("/test") order by $doc//timestamp descending limit 1 return concat($doc//id/text(), ", ", $doc//timestamp/text())
方法二:先排序再取首个文档
如果更习惯分步处理,可以先把排序后的文档存到变量里,再取第一个元素:
let $sorted-docs := for $doc in fn:collection("/test") order by $doc//timestamp descending return $doc return concat($sorted-docs[1]//id/text(), ", ", $sorted-docs[1]//timestamp/text())
小提示
你的timestamp格式是标准的ISO8601(比如2018-03-05T11:29:42.722Z),不管它是字符串类型还是xs:dateTime类型,排序逻辑都是正确的,不用担心时间顺序出错~
内容的提问来源于stack exchange,提问作者coder25
相关产品推荐
相关产品推荐

