[英]return latest document based on a element in marklogic
有一個包含4個文檔的集合。 我想檢索帶有最新時間戳的文檔。
以下查詢有助於按降序排列,但我需要最新的修改文檔
for $doc in fn:collection("/test")
order by $doc//timestamp descending
return $doc//id/text(),",",$doc//timestamp/text())
產量
1234, 2018-03-05T11:29:42.722Z
5678,2018-03-05T11:29:42.715Z
8976,2018-02-05T11:28:42.710Z
8976,2018-02-04T11:28:42.716Z
您的for循環已經在生成一個序列,因此您要做的就是獲取第一項。 因此,您不必最終查詢不需要的文檔的值,只需將查詢的輸出呈現部分移動到單獨的表達式中即可。
let $latest :=
(for $doc in fn:collection("/test")
order by $doc//timestamp descending
return $doc)[1]
return $latest//id/text(),",",$latest//timestamp/text())
現在,如果在xs:dateTime
類型的timestamp
上存在范圍索引,則可以選擇最新文檔,而無需先將所有這些文檔加載到內存中並進行排序。 但是,您可能必須將$doc//timestamp
替換$doc//timestamp
$doc/path/to/timestamp
(沒有雙斜杠),查詢優化器才能自動使用范圍索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.