Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xquery 将文档插入特定的数据库标记逻辑_Xquery_Marklogic_Roxy - Fatal编程技术网

Xquery 将文档插入特定的数据库标记逻辑

Xquery 将文档插入特定的数据库标记逻辑,xquery,marklogic,roxy,Xquery,Marklogic,Roxy,我正在和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

我正在和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")) )

};
xquery版本“1.0-ml”;
声明命名空间appsetup=”http://kittens.com.au/appsetup";
声明函数appsetup:setup-day0($root$content db){
(:某些值:)
让$m:=map:new()
let$000;:=map:put($m,“永远的小猫”,xdmp:parse dateTime(“[Y0001]-[M01]-[D01]”,“2999-12-31”))
let$000;:=map:put($m,“Kittens Never”,xdmp:parse dateTime(“[Y0001]-[M01]-[D01]”,“1899-12-31”))
让$\u:=map:put($m,“kittensloadroot”,“$Root”)
返回xdmp:documentinsert(“/ksys/smap”,{$m},
(xdmp:权限(“小猫角色”,“读取”),
xdmp:权限(“小猫角色”、“更新”))
};
xdmp:document insert
将文档插入到默认的“documents”数据库中。我环顾四周,找不到一个方法来表示将此文档加载到此数据库中。我只找到了使用xdmp:document load()将文档插入特定林的方法


有没有一种方法可以让我说将这个东西加载到此数据库中,最好只是作为xquery参数?

xdmp:document insert默认情况下不会插入到Documents数据库中。它将插入到应用程序服务器配置中定义的数据库中。其思想是您有一个应用程序服务器,用于与数据库进行接口

一些注意事项:

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

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

我喜欢invoke function()。这可能会有所帮助:关于您的链接,请注意:MarkLogic的官方文档在每个版本中都会更新。在ML8中,有一种新的事务模式:update auto commit,它在ML7中不可用。在许多情况下,它是非常宝贵的,因为如果与隔离=不同事务一起使用,那么插入的文档在原始调用代码中是可用的。我们不能从配置中指向正确的数据库吗。文件本身?我的意思是首先通过像
ml local info | grep content db
这样的命令检查roxy指向的数据库。这样我们就可以知道默认的db roxy指向什么。稍后,只需覆盖local.properties文件中的配置并指向正确的数据库。类似于
content db=xyz db
app content db=xyz db
。现在,只需通过重写roxy函数来使用xdmp:documentinsert,以指向您编写了xdmp:documentinsert逻辑的.xqy文件。