Marklogic如何使用序列化

时间:2019-03-07 15:05:49

标签: marklogic

如何使用序列化在集合/ user /参考书目中获取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>

:)

1 个答案:

答案 0 :(得分:0)

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

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

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