如何使用 corb 保存与 Marklogic 中的模式匹配的 URI 列表?

How to save a list of URIs matching a pattern in Marklogic with corb?

我需要一些关于 MarkLogic、XQuery 和 corb 的帮助,

我在数据库中有数百万个文档,我正在尝试编写 XQuery 来保存匹配的 uris。

urisVersions.xqy

xquery version "1.0-ml";
let $uris := cts:uri-match("*versions/*version-*")

return (fn:count($uris), $uris)

urisSave.xqy

xquery version "1.0-ml";
declare variable $URI as xs:string external;

let $uri := $URI 
return xdmp:save("/tmp/test",$uri)

保存-job.properties

XCC-CONNECTION-URI= xcc://user:admin@localhost:8000/
URIS-MODULE=urisVersions.xqy|ADHOC
XQUERY-MODULE=urisSave.xqy|ADHOC
THREAD-COUNT=10

低于错误 严重:致命错误 com.marklogic.developer.corb.CorbException:URI 处的参数类型无效:/12312/versions/item/papkov。xml.version-24

谁能帮我解决这个问题?

使用 PROCESS-TASK option to use the com.marklogic.developer.corb.ExportBatchToFileTask class, which will write the results of each process module invocation to an output file. You can configure where to write the file and the filename with EXPORT-FILE-NAME and EXPORT-FILE-DIR 选项配置作业。如果您不配置 EXPORT-FILE-DIR,只是给它一个带有 EXPORT-FILE-NAME 的文件名,它会写入相对于 CoRB 启动位置的文件名。

PROCESS-TASK=com.marklogic.developer.corb.ExportBatchToFileTask
EXPORT-FILE-NAME=versionsURIs.txt

将您的进程模块更改为简单的 return $URI 值:

xquery version "1.0-ml";
declare variable $URI as xs:string external;
$URI

如果您只想将 URI 写入文件而不进行转换或进行任何处理,那么您可以使用 ModuleExecutor class 并让它写入 cts:uri-直接匹配输出文件。