删除 marklogic 中具有多个版本的文档的最佳方法

Best way to delete documents in marklogic which are having multiple version

我们在数据库中有多个版本的文档。对于前 文档 URI 如下所示:-

/PremierLeague/Manutd/players.xml-version-2
/PremierLeague/Manutd/players.xml-version-3
/PremierLeague/Manutd/players.xml-version-4
.
.
.
.
.
/PremierLeague/Manutd/players.xml-version-998
/PremierLeague/Manutd/players.xml-version-999
/PremierLeague/Manutd/players.xml-version-1000

我们需要找到这样的所有文档的数量,然后删除所有高于“.version-20”的文档版本。

例如

/PremierLeague/Manutd/players.xml-version-19 --> NOT DELETE
/PremierLeague/Manutd/players.xml-version-20 --> NOT DELETE 
/PremierLeague/Manutd/players.xml-version-21 --> TO BE DELETED
/PremierLeague/Manutd/players.xml-version-22 --> TO BE DELETED
.
.
.
.
/PremierLeague/Manutd/players.xml-version-999 --> TO BE DELETED
/PremierLeague/Manutd/players.xml-version-1000 --> TO BE DELETED

我们有多个目录,其中存在多个文档。 截至目前,我们统计的文档如下

xquery version "1.0-ml";
fn:count(fn:doc("/PremierLeague/Manutd/players.xml-version-*"))

删除此类文档的最佳方法是什么?

启用 uri 词典并使用 'uris' 或 'directory' 函数之一,例如 cts:uris,而不是 fn:doc -- fn:doc 'opens' 文档和 returns 文档节点,而不是 uri。 你不想在删除文档时这样做。

注意选择的版本模式和要求——如前所述,您最终可能会删除 所有 版本,以及碰巧具有子字符串“-version”的文档" 在版本控制之前它们中的内容将不匹配(与您的示例代码)。

考虑管理文档版本(包括保留策略)的文档库服务。