Вставить документ в определенную базу данных MarkLogic
Я настраиваю базу данных с помощью Roxy, которая отличается от базы данных "документы". Я хочу вставить файл конфигурации в эту базу данных.
У меня есть эта функция в xquery ml-1.0
xquery version "1.0-ml";
declare namespace appsetup = "http://kittens.com.au/appsetup";
declare function appsetup:setup-day0($root,$content-db){
(: some values :)
let $m := map:new ()
let $_ := map:put ($m, "Kittens-Forever",xdmp:parse-dateTime("[Y0001]-[M01]-[D01]", "2999-12-31"))
let $_ := map:put ($m, "Kittens-Never", xdmp:parse-dateTime("[Y0001]-[M01]-[D01]", "1899-12-31"))
let $_ := map:put ($m, "Kittens-Load-Root", $root)
return xdmp:document-insert ("/ksys/smap", <s:map>{$m}</s:map>,
(xdmp:permission ("Kittens-role", "read"),
xdmp:permission ("Kittens-role", "update")) )
};
xdmp:document-insert
вставляет документ в базу данных по умолчанию "документы". Я осмотрелся и не смог найти способ загрузить этот документ в эту базу данных. Я только нашел способ вставить документ в определенный лес с помощью xdmp: document-load ( https://docs.marklogic.com/xdmp:document-load).
Есть ли способ для меня, чтобы сказать, загрузить эту вещь в эту базу данных, предпочтительно просто как параметр xquery?
1 ответ
xdmp:document-insert по умолчанию не вставляется в базу данных документов. Он вставляется в базу данных, определенную в конфигурации сервера приложений. Идея состоит в том, что у вас есть сервер приложений, который вы используете для взаимодействия с базой данных.
Некоторые заметки:
- Используйте сервер приложений, настроенный для вашей базы данных.
- Или используйте REST API, у которого есть параметр для этого
- Или используйте правила перезаписи HTTP для динамического изменения базы данных на основе пользователя, URI или параметра запроса
- Или используйте xdmp:eval или его производные (spawn, invoke, invoke-function), которые все имеют возможность определить, какую базу данных использовать.
Для вашего конкретного примера я бы предложил использовать xdmp: invoke-function.