我在馆藏中有2个馆藏。
这有10个id为
的文件test1_1
test1_2
.....
test1_10
这有20个文件,ID如下
test2_1
test2_2
.....
test2_20
查询:
let $result := cts:collection-match("/test/*")
let $id :=(
fn:distinct-values(
for $doc in fn:collection(result)
order by $doc//timestamp descending
return $doc//timestamp/text()
)[1 to 5]
)
return $id
我想从每个集合中返回前5个文档时间戳的降序,但它只返回5个文档而不是10个,即每个集合的前5个
答案 0 :(得分:2)
当$result
是一个包含多个项目的序列时,写for $doc in fn:collection($result)
会将多个集合中的所有文档聚合到一个序列中。您需要首先迭代集合,然后迭代每个集合中的值,有序和有限。
let $collections := cts:collection-match("/test/*")
let $id :=
for $collection in $collections
return
fn:distinct-values(
for $doc in fn:collection($collection)
order by $doc//timestamp descending
return $doc//timestamp/string()
)[1 to 5]
return $id