Xquery 将文档插入特定的数据库标记逻辑
我正在和roxy建立一个数据库,它不同于“文档”数据库。我想在数据库中插入一个配置文件 我在xquery ml-1.0中有这个函数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
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文件。