2016-11-24 5 views
1

「文書」データベースとは異なるroxyを使用してデータベースを設定しています。私はそのデータベースに設定ファイルを挿入したい。特定のデータベースに文書を挿入するMarkLogic

私は、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パラメータとしてこのことをロードする方法がありますか?

答えて

2

xdmp:document-insertは、デフォルトでドキュメントデータベースに挿入されません。これは、アプリケーションサーバー構成で定義されたデータベースに挿入されます。アイデアは、データベースとのインターフェイスに使用するアプリケーションサーバーがあることです。

いくつかの注意:

  • は、データベースに対して構成アプリケーション・サーバーを使用してください。
  • またはこの
  • やルールが動的にユーザーに基づいてデータベースを変更するためにHTTPリライトを使用するためのパラメータを持っているREST APIを使用して、URIまたはクエリパラメータ
  • またはxdmp使用:evalのか、その誘導体(産卵、 invoke、invoke-function)には、使用するデータベースを定義するオプションがあります。

特定のサンプルについては、xdmp:invoke-functionを使用することをお勧めします。

+0

私はinvoke-function(https://docs.marklogic.com/xdmp:invokefunction)が好きです。 –

+0

これはおそらく役に立ちます: http://www.xqueryhacker.com/2014/05/01/applying-a-function-in-the-context-of-a-different-database-updated-for-marklogic-7。 html –

+0

あなたのリンクについての注意 - MarkLogicの公式ドキュメントは、リリースごとに更新されています。 ML8では、新しいトランザクションモードがあります。これは7で利用できないupdate-auto-commitです。多くの場合、isolation = different-transactionで使用すると、挿入されたドキュメントは元の呼び出しコードで使用できるため、 。 –

関連する問題