
op:write( [$docDescCols as map:map?] ) as map:map
Inserts or overwrites the documents identified by the uri column with the data supplied by the other document descriptor columns.
| Parameters | |
|---|---|
| $docDescCols | A map to specify which document columns to use when writing. If this parameter is not passed in op:doc-cols() is used as default. |
xquery version "1.0-ml";
import module namespace op="http://marklogic.com/optic"
at "/MarkLogic/optic.xqy";
declare option xdmp:update "true";
let $doc-descriptors := (
map:entry("uri", '/optic/update/write4.xml')
=>map:with("doc", <doc>write4</doc>),
map:entry("uri", '/optic/update/write5.xml')
=>map:with("doc", <doc>write5</doc>)
=>map:with("collections", ("write")),
map:entry("uri", '/optic/update/write6.xml')
=>map:with("doc", <doc>write6</doc>)
=>map:with("collections", ("write", "write6"))
=>map:with("metadata", map:entry("operation","write6"))
)
return op:from-doc-descriptors($doc-descriptors)
=>op:write(op:doc-cols())
=>op:result()
xquery version "1.0-ml";
import module namespace op="http://marklogic.com/optic"
at "/MarkLogic/optic.xqy";
declare option xdmp:update "true";
let $doc-descriptors := (
map:entry("uri", '/optic/update/write7.xml')
=>map:with("doc", <doc>write7</doc>)
=>map:with("collections", ("write", "write7"))
=>map:with("metadata", map:entry("operation","write7")),
map:entry("uri", '/optic/update/write8.xml')
=>map:with("doc", <doc>write8</doc>)
=>map:with("collections", ("write", "write8"))
=>map:with("metadata", map:entry("operation","write8"))
=>map:with("permissions", (xdmp:permission("rest-reader","read"),xdmp:permission("rest-writer","update"))),
map:entry("uri", '/optic/update/write9.xml')
=>map:with("doc", <doc>write9</doc>)
=>map:with("collections", ("write", "write9"))
=>map:with("metadata", map:entry("operation","write9"))
=>map:with("permissions", (xdmp:permission("rest-reader","read"),xdmp:permission("rest-writer","update")))
=>map:with("quality", 9)
)
let $config := map:entry("uri","uri")=>map:with("doc","doc")=>map:with("collections","collections")
=>map:with("metadata","metadata")=>map:with("permissions","permissions")=>map:with("quality","quality")
return op:from-doc-descriptors($doc-descriptors)
=>op:write($config)
=>op:result()
xquery version "1.0-ml";
import module namespace op="http://marklogic.com/optic"
at "/MarkLogic/optic.xqy";
declare option xdmp:update "true";
let $rows := (
map:entry("id",1)
=>map:with("myQua",4)
=>map:with("o_uri", '/test/fromDocUris/1.json')
=>map:with("myUri", '/optic/update/write13.json')
=>map:with("myColl", ("/optic/write", "newcol"))
=>map:with("meta","dog")
=>map:with("myPerm", (xdmp:permission("rest-reader","read"),xdmp:permission("rest-writer","update"))),
map:entry("id",2)
=>map:with("myQua",5)
=>map:with("o_uri", '/test/fromDocUris/2.json')
=>map:with("myUri", '/optic/update/write14.json')
=>map:with("myColl", "/optic/write")
=>map:with("meta","cow")
=>map:with("myPerm", (xdmp:permission("rest-reader","read"),xdmp:permission("rest-writer","update"))),
map:entry("id",3)
=>map:with("myQua",6)
=>map:with("o_uri", '/test/fromDocUris/3.json')
=>map:with("myUri", '/optic/update/write15.json')
=>map:with("myColl", "/optic/write")
=>map:with("meta","tiger")
=>map:with("myPerm", (xdmp:permission("rest-reader","read"),xdmp:permission("rest-writer","update")))
)
let $row-col-types := (
map:entry("column", "id") => map:with("type", "integer")=> map:with("nullable", false()),
map:entry("column", "myQua") => map:with("type", "integer")=> map:with("nullable", true()),
map:entry("column", "o_uri") => map:with("type", "string")=> map:with("nullable", false()),
map:entry("column", "myUri") => map:with("type", "string")=> map:with("nullable", false()),
map:entry("column", "myColl") => map:with("type", "none")=> map:with("nullable", true()),
map:entry("column", "meta") => map:with("type", "string")=> map:with("nullable", true()),
map:entry("column", "myPerm") => map:with("type", "none")=> map:with("nullable", true())
)
let $config := map:entry("uri","myUri")=>map:with("doc","myDoc")=>map:with("collections","myColl")
=>map:with("metadata","myMeta")=>map:with("permissions","myPerm")=>map:with("quality","myQua")
return op:from-param("bindingParam", "", $row-col-types)
=>op:join-doc(op:col("myDoc"), op:col("o_uri"))
=>op:bind(op:as("myMeta", op:json-object((op:prop("meta", op:json-string(op:col("meta")))))))
=>op:order-by("id")
=>op:write($config)
=>op:result("object",map:entry("bindingParam",$rows))
(: Write a temporal document:)
xquery version "1.0-ml";
import module namespace op="http://marklogic.com/optic"
at "/MarkLogic/optic.xqy";
declare option xdmp:update "true";
let $doc-descriptors := (
map:entry("uri", '/optic/update/temporal/temporal1.json')
=>map:with("doc", xdmp:unquote('{"desc":"temporal doc 1"}',(),"format-json"))
=>map:with("collections", ("temporal", "write"))
=>map:with("metadata", map:entry("validStart","2014-04-03T11:00:00")=>map:with("validEnd","9999-12-31T11:59:59Z"))
=>map:with("permissions", (xdmp:permission("rest-reader","read"),xdmp:permission("rest-writer","update")))
=>map:with("quality", 1)
=>map:with("temporalCollection","update")
)
return op:from-doc-descriptors($doc-descriptors)
=>op:write()
=>op:result()
(: Overwrite document collections :)
xquery version "1.0-ml";
import module namespace op="http://marklogic.com/optic"
at "/MarkLogic/optic.xqy";
declare option xdmp:update "true";
let $doc-descriptors := (
map:entry("uri", '/optic/update/write1.xml')
=>map:with("collections", ("overwrite","overwrite10")),
map:entry("uri", '/optic/update/write2.xml'),
map:entry("uri", '/optic/update/write3.xml')
=>map:with("collections", ("overwrite","overwrite12"))
)
return op:from-doc-descriptors($doc-descriptors)
=>op:order-by("uri")
=>op:write(op:doc-cols((), ("uri","doc","collections")))
=>op:result()
Stack Overflow: Get the most useful answers to questions from the MarkLogic community, or ask your own question.