2

我正在使用 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 参数?

4

1 回答 1

3

默认情况下,xdmp:document-insert 不会插入到 Documents 数据库中。它插入到应用程序服务器配置中定义的数据库中。这个想法是您有一个应用程序服务器,用于与数据库交互。

一些注意事项:

  • 使用为您的数据库配置的应用服务器。
  • 或者使用具有此参数的 REST API
  • 或者使用 HTTP 重写规则根据用户、URI 或查询参数动态更改数据库
  • 或者使用 xdmp:eval 或其衍生物(spawn、invoke、invoke-function),它们都有一个选项来定义要使用的数据库。

对于您的特定示例,我建议您使用 xdmp:invoke-function。

于 2016-11-24T02:36:37.240 回答