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

如何在Marklogic中保存与corb模式匹配的URI列表?,marklogic,marklogic-corb,Marklogic,Marklogic Corb,我需要一些关于MarkLogic、XQuery和corb的帮助 数据库中有数百万个文档,我正试图编写XQuery来保存匹配的URI urisVersions.xqy xquery version "1.0-ml"; let $uris := cts:uri-match("*versions/*version-*") return (fn:count($uris), $uris) urisave.xqy xquery version "1.0-

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

数据库中有数百万个文档,我正试图编写XQuery来保存匹配的URI

urisVersions.xqy

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

return (fn:count($uris), $uris)
urisave.xqy

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

let $uri := $URI 
return xdmp:save("/tmp/test",$uri)
保存作业属性

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


有人能帮我解决这个问题吗?

使用
com.marklogic.developer.corb.ExportBatchToFileTask
类配置作业,该类将每个流程模块调用的结果写入输出文件。您可以使用和选项配置文件写入位置和文件名。如果不配置EXPORT-FILE-DIR,只给它一个带有EXPORT-FILE-NAME的文件名,它将从启动CoRB的位置写入相对位置

PROCESS-TASK=com.marklogic.developer.corb.ExportBatchToFileTask
EXPORT-FILE-NAME=versionsURIs.txt
将流程模块更改为只返回$URI值:

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

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

该错误是因为
xdmp:save()
的第二个参数需要是一个节点。您正在提供一个带有URI的字符串。您可以保存一个
text()
节点:
xdmp:save(“/tmp/test”,text{$uri})
,但是,流程模块的每次调用都会试图覆盖该“/tmp/test”文件-不太好。您希望使用将流程模块的输出写入文件的CoRB任务。谢谢,@Mads Hansen