【问题标题】:Insert a document into a particular database MarkLogic将文档插入特定数据库 MarkLogic
【发布时间】:2016-11-24 02:01:20
【问题描述】:

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

【问题讨论】:

    标签: xquery marklogic roxy


    【解决方案1】:

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

    一些注意事项:

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

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

    【讨论】:

    • 我喜欢调用函数 (docs.marklogic.com/xdmp:invoke-function)。
    • 这可能有帮助:xqueryhacker.com/2014/05/01/…
    • 关于您的链接的注释 - MarkLogic 的官方文档在每个版本中都会更新。在 ML8 中,有一个新的事务模式:update-auto-commit 是 7 中没有的。在很多情况下,它是无价的,因为如果与isolation=different-transaction一起使用,那么插入的文档在原始调用代码中是可用的.
    • 我们不能只从配置中指向正确的数据库吗?文件本身?我的意思是首先通过ml local info | grep content-db 之类的命令检查roxy 指向的数据库。这样我们就可以知道默认的 db roxy 指向的是什么。稍后只需覆盖 local.properties 文件中的配置并指向正确的数据库。类似于content-db=xyz-dbapp-content-db=xyz-db。现在只需通过覆盖 roxy 函数来使用 xdmp:document-insert 指向您编写 xdmp:document-insert 逻辑的 .xqy 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-29
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多