仅返回最近十天内的URI

后端开发 2026-07-11

我正在使用这个查询。

cts:uris((), (),
  cts:and-query((
    cts:collection-query("http://nl.abnamro.com/cre/canonical"),
    cts:collection-query("http://nl.abnamro.com/cre/source/rapid"),
    cts:collection-query("latest"),
    cts:and-query((
      cts:element-range-query(xs:QName("cre:ingestTime"), "<=", $selectedDate),
      cts:element-range-query(xs:QName("cre:ingestTime"), ">=", $chooseDate)
    ))
  )), (),
  functx:value-intersect(xdmp:host-forests(xdmp:host()), xdmp:database-forests(xdmp:database()))
)

我已经确认元素的索引确实存在。这和我运行脚本的方式有关。

这里 $selectedDate 是距离今天的第十天,即3 月17日;$chooseDate 是今天的日期,即3 月27日。当我运行时,会得到如下错误:

XDMP-ELEMRIDXNOTFOUND: cts:uris((), (), cts:and-query((cts:collection-query("http://nl.abnamro.com/cre/canonical"), cts:collection-query("http://nl.abnamro.com/cre/source/rapid"), cts:collection-query("latest"), ...), ()), (), (xs:unsignedLong("10633348138131917664"), xs:unsignedLong("11995695142322219087"))) -- No string element range index for {http://nl.abnamro.com/cre}ingestTime collation=http://marklogic.com/collation/

解决方案

错误信息告诉你:

No string element range index for {http://nl.abnamro.com/cre}ingestTime

那个 ingestTime 元素的索引是什么?是 xs:date 还是 xs:dateTime

你没有展示 $selectedDate$chooseDate 变量是如何创建的,但看起来你有字符串(可能是日期或日期时间字符串值)。

如果你想查询日期或日期时间范围索引,那么值需要匹配该索引的标量类型。一个元素上可以有多种不同标量类型的索引。例如,你可以把一个值作为字符串建立索引,也可以作为日期时间(dateTime)建立索引。因此,值必须与你想使用的索引的标量类型相匹配。

如果你能提供让变量被let绑定的相关代码,以及关于索引的更多信息,那么回答你的问题并告诉你需要修改的地方会更容易。

不过,假设索引是 xs:date,而你的 $chooseDate 是字符串 "2026-03-27",那么你需要确保查询所用的值是 xs:date 的值:

xs:date($chooseDate)
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章