Xquery Marklogic-删除版本化集合

Xquery Marklogic-删除版本化集合,xquery,marklogic,mlcp,marklogic-corb,Xquery,Marklogic,Mlcp,Marklogic Corb,我有大约4300万个文档,它们在LIVE集合中拥有最新版本的文档,在另一个名为(/collection/versionNumber的版本集合中也有相同版本的文档。我想删除大约3400万个版本的集合。一次删除所有内容的最佳方法是什么。我认为您的应用程序正在使用DLS库进行版本控制。如果是,并且您不希望将来查看任何版本,则只删除版本化文档。在这种情况下,Use可以使用“dls:documentunmanage”API 此外,在继续之前,请先浏览dls:purge和dls:document purge

我有大约4300万个文档,它们在LIVE集合中拥有最新版本的文档,在另一个名为(/collection/versionNumber的版本集合中也有相同版本的文档。我想删除大约3400万个版本的集合。一次删除所有内容的最佳方法是什么。

我认为您的应用程序正在使用DLS库进行版本控制。如果是,并且您不希望将来查看任何版本,则只删除版本化文档。在这种情况下,Use可以使用“dls:documentunmanage”API

此外,在继续之前,请先浏览dls:purge和dls:document purge。我对这两个人不是很确定

无论如何,即使不是DLS,也不推荐一次性(单笔事务)处理它们。可以批量处理它们,也可以通过spawn在任务服务器的不同线程中设置它们。

您可以尝试使用在单个事务中删除集合中的所有文档

如果这不起作用,而且无法一次性删除,那么我会考虑使用批处理工具。例如,一份工作

包含所需属性的示例作业选项文件,以下属性除外:


我们没有使用DLS,即使我知道关于spawn的事情,这也需要大量的时间。
# Inline module to select all URIs from the collection
URIS-MODULE=INLINE-XQUERY|let $uris := cts:uris("",(),cts:collection-query("/collection/versionNumber")) return (count($uris), $uris)

# Inline module to delete the docs
PROCESS-MODULE=INLINE-XQUERY|declare variable $URI as xs:string external; xdmp:document-delete($URI)

THREAD-COUNT=10