Marklogic как сохранить файл xquery в базе данных модулей - PullRequest
0 голосов
/ 08 июня 2018

Я знаю, как вставить документ в XML-файл, но не знаю, как сохранить файл xquery в базе данных Marklogic Module.Причина, по которой я хочу сохранить файл xquery для настройки расписания задачи.У меня есть файл xquery ниже.Заранее спасибо.

declare namespace...
let $uris := cts:element-value(...code...),
             cts:and-query((...code...))

let $result := {<stats><top-docs>
                  for $uri in $uris[1 to 10]
                       ...more code here..
               }</top-docs></stats>
let $permissions := (xdmp:permission(..give permissions here.))
let $_ := xdmp:log("Inserting Stats Document")
return xdmp:document-insert("/acitivity/stats.xml",$result, $permissions))   

Ответы [ 3 ]

0 голосов
/ 09 июня 2018

В дополнение к ответу Мадса:

Вы должны установить разрешение на выполнение документа для не-администратора для его выполнения.Важно помнить, что при работе в marklogic (как xquery или javascript или как результат одного из API-интерфейсов клиента) - с вашим сеансом связано несколько баз данных - Data, Modules, Security и т. Д. - все эти данные, такие как'операции идут в БД данных, все операции' выполнение 'идут в БД (или файловую систему) модулей и т. д., поскольку в xdmp: document-insert отсутствует параметр «база данных», и связь с базой данных не может быть изменена водно выражение - вы используете одну из функций xdmp: eval / xdmp: invoke, чтобы запустить вставку в под-контексте с нужными настройками.

Пример: https://docs.marklogic.com/xdmp:invoke-function

0 голосов
/ 12 июня 2018

На сайте MarkLogic также есть удобный рецепт.Я использую это довольно часто.Он хорошо прокомментирован и имеет логику, чтобы сначала попробовать его без коммита, чтобы убедиться, что он делает то, что вы ожидаете:

http://developer.marklogic.com/recipe/load-a-module

0 голосов
/ 08 июня 2018

Существует несколько способов вставить файл xqy в базу данных модулей.Вот лишь некоторые из них:

  1. На мой взгляд, рекомендуется использовать инструмент развертывания, такой как ml-gradle , чтобы вы могли легко развернуть свой модуль в нескольких средах иподелиться настройками развертывания с другими разработчиками.
  2. Вы можете выполнить запрос, аналогичный показанному в QConsole, но вместо базы данных * 1012 выберите базу данных Modules .* Содержимое база данных в раскрывающемся списке базы данных
  3. Вы можете использовать конечную точку отдыха, такую ​​как / v1 / documents PUT и выбрать базу данных модулей с параметром базы данных.
...