我可以使用哪些xquery函数来连接MarkLogic数据库并将该数据库的集合复制到位于同一MarkLogic服务器中的另一个数据库。
您可以使用xdmp:invoke-function()
,并在选项中指定不同的database
。
xquery version "1.0-ml";
for $doc in cts:search(doc(), cts:collection-query("collection-name"))
let $uri := $doc/base-uri()
let $collections := xdmp:document-get-permissions($uri)
let $permissions := xdmp:document-get-collections($uri)
return
xdmp:invoke-function(function() {
xdmp:document-insert($uri, $doc, $permissions, $collections)
},
<options xmlns="xdmp:eval">
<database>{ xdmp:database("GTM2_TEST") }</database>
</options>)
如果集合中有大量的文档,那么您可能需要查看xdmp:spawn-function()
,或者使用批处理工具(如CoRB)进行工作,以避免扩展树缓存错误和/或尝试在一个大事务中处理它们时超时。