Marklogic Как использовать сериализацию - PullRequest
0 голосов
/ 07 марта 2019

Как использовать сериализацию для получения 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

(: сериализовать возврат, но он не показывает ограничение от 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 голосов
/ 07 марта 2019

Сам запрос - это просто описание документов, которые вы хотите.Чтобы получить эти документы, вам необходимо передать запрос в качестве аргумента функции cts:search.

Но вам не нужно вручную сериализовывать документы, если вы используете MLCP, который автоматически сериализует документы, когда они записываются на диск.Кроме того, если вы сериализуетесь дважды, вы можете получить двойные символы на выходе.

Если причиной сериализации этого запроса является вывод всего в одном документе, то оберните результаты cts:search в корневой элемент и используйте xdmp:document-insert, чтобы вставить (не сериализованный) вывод вбаза данных.Затем используйте MLCP для экспорта этого.В противном случае вам вообще не нужно писать XQuery, поскольку вы должны иметь возможность делать все в MLCP с использованием фильтра коллекции и параметров ограничения.

...