Marklogic 如何使用序列化

Marklogic How to use serialize

如何使用serialize得到集合/user/bibliography中的2000个文档,然后使用MLCP导出数据。

let $query:=cts:and-query(cts:collection-query("/user/bibliography"))[1 to 2000]

let $serialize := xdmp:quote(
    <query>{$query}</query>/*, 
    <options xmlns="xdmp:quote"><indent>no</indent></options>
)
return $serialize

(:serialize return 但它没有显示 1 到 2000 条记录的限制。

   <cts:and-query xmlns:cts="http://marklogic.com/cts"><cts:collection- 
       query><cts:uri>/user/bibliography</cts:uri></cts:collection-query> 
  </cts:and-query>

:)

查询本身只是对您想要的文档的描述。为了获得这些文档,您需要将查询作为参数传递给 cts:search 函数。

但是如果您使用 MLCP,则不需要手动序列化文档,它会在将文档写入磁盘时自动序列化文档。此外,如果您序列化两次,您可能会在输出中得到双重编码的字符。

如果序列化此查询的原因是将所有内容输出到单个文档中,则将 cts:search 的结果包装在根元素中并使用 xdmp:document-insert 插入(未序列化)输出到数据库中。然后使用 MLCP 将其导出。否则,您根本不需要编写 XQuery,因为您应该能够使用集合过滤器和限制参数在 MLCP 中执行所有操作。