Вставить документ в определенную базу данных 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.

Другие вопросы по тегам